Tin học
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

hôm này chúng ta ôn tập lại cách giải thich đoan mã tiến trình

Go down

hôm này chúng ta ôn tập lại cách giải thich đoan mã tiến trình Empty hôm này chúng ta ôn tập lại cách giải thich đoan mã tiến trình

Bài gửi  phanhung09h1012049_i92c 22/12/2010, 09:27

Giải thích đoạn mã sau:
Code:
#define BUFFER_SIZE 30
HANDLE semEmpty, semFull;
semEmpty=CreateSemaphore(0, BUFFER_SIZE, BUFFER_SIZE, "SemEmpty");
semFull=CreateSemaphore(0, 0, BUFFER_SIZE, "SemFull");
WaitForSingleObject(semEmpty, INFINITE);
printf(“semEmpty Handle=%d”, semEmpty);
WaitForSingleObject(semFull, INFINITE);
printf(“semFull Handle=%d”, semFull);

Trả lời:
1. Khai báo kích thước bộ nhớ đệm bằng 30 (cho bài toán Sản xuất-Tiêu thụ).
2. Khai báo 2 biến semEmpty và semFull dùng chứa mục quản (Handle) của 2 đèn hiệu (Semaphore).
3. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemEmpty với giá trị ban đầu và tối đa bằng 30 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semEmpty.
4. Yêu cầu hệ điều hành tạo lập đèn hiệu liên tiến trình tên là SemFull với giá trị ban đầu bằng 0 và giá trị tối đa bằng 30 (BUFFER_SIZE). Mục quản của đèn hiệu gửi vào biến semFull.
5. Chờ vô hạn (INFINITE) đến khi giá trị của đèn SemEmpty lớn hơn 0 (hiện bằng 30 nên qua được, sau đó giá trị của SemEmpty còn 29).
6. Lệnh printf() đưa ra Mục quản của đèn hiệu SemEmpty.
7. Lời gọi chờ tại SemFull sẽ chuyển luồng hiện hành sang trạng thái chờ đến khi giá trị của đèn này lớn hơn 0 (hiện bằng 0).
8. Lệnh printf() đưa ra Mục quản của đèn hiệu SemFull, nhưng hiện tại không thực hiện, do luồng hiện hành phải chờ đến khi giá trị của SemFull lớn hơn
0.

phanhung09h1012049_i92c

Tổng số bài gửi : 15
Join date : 17/11/2010

Về Đầu Trang Go down

Về Đầu Trang

- Similar topics

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