Bạn nào biết xin giải thích dùm mình phần code của hàm main() thực thi bài toán SXTT Phần này mình chưa hiểu lắm
Trang 1 trong tổng số 1 trang
Bạn nào biết xin giải thích dùm mình phần code của hàm main() thực thi bài toán SXTT Phần này mình chưa hiểu lắm
<p>#include "stdafx.h"
#include
#include
#include
#define BUFFER_SIZE 10
int buffer[BUFFER_SIZE];
int in=0;// sản xuất
int out=0;// tiêu thụ
int nextProduced=1;
HANDLE semEmpty, semFull;
CRITICAL_SECTION critSec;
void Producer(){
while (1){
// San xuat (nextProduced)
WaitForSingleObject(semEmpty, INFINITE);
EnterCriticalSection(&critSec);
buffer[in]=nextProduced ;
in=(in 1)%BUFFER_SIZE;// số dư phép chia
LeaveCriticalSection(&critSec);
ReleaseSemaphore (semFull, 1, NULL);
SuspendThread(GetCurrentThread());
//( luồng hiện hành chuyển sang trạng thái kết thúc,trả về mục quản của hiện hành)
}
}
void Consumer(void * c){
int nextConsumed;
while (1){
WaitForSingleObject(semFull, INFINITE);
EnterCriticalSection(&critSec);
nextConsumed=buffer[out];
out=(out 1)%BUFFER_SIZE; ;// số dư phép chia
LeaveCriticalSection(&critSec);
ReleaseSemaphore (semEmpty, 1, NULL);
if ((int)c == 3) // Luong so 3
SuspendThread(GetCurrentThread());
else
Sleep(GetTickCount()P00);
;// ngủ 1 khoảng thời gian cho trước là hàm để nhận số mili giây trôi qua từ khi hệ điều hành khởi động cho đến khi gọi hàm này
}
void ShowBuffer(){
const char * LeftMargin="\n\t";
int i;
printf(LeftMargin);
for(i=0;i<(in*5);i ) putchar(' '); printf("!in");
printf(LeftMargin);
for (i=0;i
#include
#include
#include
#define BUFFER_SIZE 10
int buffer[BUFFER_SIZE];
int in=0;// sản xuất
int out=0;// tiêu thụ
int nextProduced=1;
HANDLE semEmpty, semFull;
CRITICAL_SECTION critSec;
void Producer(){
while (1){
// San xuat (nextProduced)
WaitForSingleObject(semEmpty, INFINITE);
EnterCriticalSection(&critSec);
buffer[in]=nextProduced ;
in=(in 1)%BUFFER_SIZE;// số dư phép chia
LeaveCriticalSection(&critSec);
ReleaseSemaphore (semFull, 1, NULL);
SuspendThread(GetCurrentThread());
//( luồng hiện hành chuyển sang trạng thái kết thúc,trả về mục quản của hiện hành)
}
}
void Consumer(void * c){
int nextConsumed;
while (1){
WaitForSingleObject(semFull, INFINITE);
EnterCriticalSection(&critSec);
nextConsumed=buffer[out];
out=(out 1)%BUFFER_SIZE; ;// số dư phép chia
LeaveCriticalSection(&critSec);
ReleaseSemaphore (semEmpty, 1, NULL);
if ((int)c == 3) // Luong so 3
SuspendThread(GetCurrentThread());
else
Sleep(GetTickCount()P00);
;// ngủ 1 khoảng thời gian cho trước là hàm để nhận số mili giây trôi qua từ khi hệ điều hành khởi động cho đến khi gọi hàm này
}
void ShowBuffer(){
const char * LeftMargin="\n\t";
int i;
printf(LeftMargin);
for(i=0;i<(in*5);i ) putchar(' '); printf("!in");
printf(LeftMargin);
for (i=0;i
NguyenThiHongYen(I12A)- Tổng số bài gửi : 20
Join date : 20/02/2012
Similar topics
» Bạn nào biết xin giải thích dùm mình phần code của hàm main() thực thi bài toán SXTT
» Cảm ơn bạn DaoMinhTri đã giải thích cho minh hiểu phần code bây giờ mình hiểu được phần code của sản xuất tiêu thụ
» Thảo luận Bài 5
» Các bạn tham khảo một số câu hỏi và bổ sung thêm nhé!
» Giải thích sự khác biệt giữa Phân mảnh Trong với Phân mảnh Ngoài
» Cảm ơn bạn DaoMinhTri đã giải thích cho minh hiểu phần code bây giờ mình hiểu được phần code của sản xuất tiêu thụ
» Thảo luận Bài 5
» Các bạn tham khảo một số câu hỏi và bổ sung thêm nhé!
» Giải thích sự khác biệt giữa Phân mảnh Trong với Phân mảnh Ngoài
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết