Hoc Tap

Learning
 
HomeHome  FAQFAQ  SearchSearch  RegisterRegister  Log inLog in  
 

TRINH BAY BT SAN XUAT_TIEU THU

View previous topic View next topic Go down 
AuthorMessage
HUYNHPHUONG




Joined : 12 May 2008
Posts : 40

PostSubject: TRINH BAY BT SAN XUAT_TIEU THU   28/6/2008, 16:02

Thầy ơi! Bài toán SX_TT tŕnh bày như thế này đúng không Thầy?

#define BUFFER_SIZE 10 // Khai bao kich thuoc bo dem
HANDLE semEmpty, semFull; // hai den hieu
CRITICAL_SECTION critSec; // bien kieu Mutex

PRODUCER (Sản xuất)

// Chờ đến khi có chỗ trống
WaitForSingleObject(semEmpty, INFINITE);
// Xin phep vao vung tuong tranh
EnterCriticalSection(&critSec);
// Tăng (semFull) lên 1
ReleaseSemaphore(semFull, 1, NULL);
// Roi khoi vung tuong tranh
LeaveCriticalSection(&critSec);
// Tam ngung luong hien hanh
SuspendThread(GetCurrentThread());

CONSUMER (Tieu thu)

// Chờ đến khi có sản phẩm
WaitForSingleObject(semFull, INFINITE);
// Vao doan tuong tranh
EnterCriticalSection(&critSec);
// Tăng (semEmpty) lên 1
ReleaseSemaphore (semEmpty, 1, NULL);
// Roi khoi doan tuong tranh
LeaveCriticalSection(&critSec);
// ... Tiêu thụ (nextConsumed)
// Tieu thu xong thi tam ngung luong hien hanh
SuspendThread(GetCurrentThread());

Admin: Đúng, nhưng c̣n chi tiết và rắc rối quá. Khó nhớ !
Back to top Go down
HUYNHPHUONG




Joined : 12 May 2008
Posts : 40

PostSubject: Re: TRINH BAY BT SAN XUAT_TIEU THU   30/6/2008, 08:48

HUYNHPHUONG wrote:

Bài toán SX_TT tŕnh bày như thế này đúng không Thầy?

#define BUFFER_SIZE 10 // Khai bao kich thuoc bo dem
HANDLE semEmpty, semFull; // hai den hieu
CRITICAL_SECTION critSec; // bien kieu Mutex

PRODUCER (Sản xuất)

// Chờ đến khi có chỗ trống
WaitForSingleObject(semEmpty, INFINITE);
// Xử lư đoạn tương tranh
// Tam ngung luong hien hanh
SuspendThread(GetCurrentThread());

CONSUMER (Tieu thu)

// Chờ đến khi có sản phẩm
WaitForSingleObject(semFull, INFINITE);
// Xử lư đoạn tương tranh
// ... Tiêu thụ (nextConsumed)
// Tieu thu xong thi tam ngung luong hien hanh
SuspendThread(GetCurrentThread());

Thầy ơi! Thầy xem lại dùm em


Admin: Bây giờ th́ lại sai !
Back to top Go down
HUYNHPHUONG




Joined : 12 May 2008
Posts : 40

PostSubject: Re: TRINH BAY BT SAN XUAT_TIEU THU   30/6/2008, 15:01








#define BUFFER_SIZE 10 // Khai bao kich thuoc bo dem
HANDLE semEmpty, semFull; // hai den hieu
CRITICAL_SECTION critSec; // bien kieu Mutex

// ... Sản xuất

// Chờ đến khi có chỗ trống
WaitForSingleObject(semEmpty, INFINITE);
EnterCriticalSection(&critSec) // vào đoạn tương tranh
// Tăng (semFull) lên 1
ReleaseSemaphore(semFull, 1, NULL);
LeaveCriticalSection(&critSec) // rời khỏi đoạn tương tranh

// ... Tieu thu

// Chờ đến khi có sản phẩm
WaitForSingleObject(semFull, INFINITE);
EnterCriticalSection(&critSec) // Vào đoạn tương tranh
ReleaseSemaphore (semEmpty, 1, NULL) // Tăng (semEmpty) lên 1
LeaveCriticalSection(&critSec); // Rời khỏi đoạn tương tranh
// ... Tiêu thụ (nextConsumed)


Thầy xem lại dùm em nhé!

Admin: Tốt hơn hẳn rồi đấy, nhưng thày muốn có mă như sau:

Các đèn hiệu
Code:
semaphore semEmpty=BUFFER_SIZE;
semaphore semFull=0;
semaphore critSec=1;

Producer
Code:
while(1){
 wait(semEmpty);
 wait(critSec);
 // Đưa sản phẩm vào Buffer
 signal(semFull);
 signal(critSec);
}

Consumer
Code:
while(1){
 wait(semFull);
 wait(critSec);
 // Lấy sản phẩm từ Buffer
 signal(semEmpty);
 signal(critSec);
}
Back to top Go down

TRINH BAY BT SAN XUAT_TIEU THU

View previous topic View next topic Back to top 
Page 1 of 1

Permissions of this forum:You cannot reply to topics in this forum
Hoc Tap :: Môn học HĐH :: Hệ Điều Hành-