Cài đặt semaphore theo cấu trúc

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Cài đặt semaphore theo cấu trúc

Bài gửi  v_hoangminh[I22B] on 8/4/2013, 09:48

- Khắc phục chờ bận: Chuyển vòng lặp chờ
thành việc sử dụng toán tử block (tạm dừng)
- Để khôi phục thực hiện từ block, ta có toán tử
wakeup
- Khi đó để cài đặt, ta có cấu trúc dữ liệu mới
cho semaphore:
typedef struct {
int value; // Giá trị của semaphore
struct process *L; // Danh sách tiến trình chờ...
} semaphore;

*

void wait(semaphore *S)
{
S->value--;
if (S->value<0) {
Thêm tiến trình gọi
toán tử vào s->L;
block();
}
}

*
void signal(semaphore *S)
{
S->value++;
if (S->value<=0) {
Xóa một tiến trình P
ra khỏi s->L;
wakeup(P);
}
}

v_hoangminh[I22B]

Tổng số bài gửi : 24
Join date : 17/03/2013
Age : 26

Xem lý lịch thành viên

Về Đầu Trang Go down

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang

- Similar topics

 
Permissions in this forum:
Bạn không có quyền trả lời bài viết