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.

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

Go down

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 Empty 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

Bài gửi  NguyenThiHongYen(I12A) 3/5/2012, 15:02

<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

NguyenThiHongYen(I12A)

Tổng số bài gửi : 20
Join date : 20/02/2012

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