请问如何用C语言实现“生产者与消费者问题”?(最好附上完整的C语言源代码)
来源:百度知道 编辑:UC知道 时间:2024/08/23 13:05:02
原理很简单,但是实现是非常复杂的。
其中牵涉到大量的用于系统内核的C语言库函数,对于刚刚开始学习的学生来说,那实在是太困难了。
我也学操作系统。P语言描述的也不错,就凑合着用吧。
这里有完整源代码38K。你可以想象有多么夸张了。见我的参考资料。
我这是C++的,在网上搜到的,借给你用用, 其实都一样 改个cout cin 就是C了 没问题的 这是我们操作系统实验
#includewindows.h
#includeiostream.h
#includestdio.h
HANDLE hMutex;
HANDLE hFull, hEmpty; HANDLE p,c;
DWORD WINAPI Producer(LPVOID);
DWORD WINAPI Consumer(LPVOID);
int a[100],i,j;
void main()
{
cout生产者消费者问题endl;
a[100]=i=j=0;
hMutex=CreateMutex(NULL,FALSE,NULL);
hFull=CreateSemaphore(NULL,0,1,NULL);
hEmpty=CreateSemaphore(NULL,1,1,NULL);
p=CreateThread(NULL,0,Producer,NULL,0,NULL);
c=CreateThread(NULL,0,Consumer,NULL,0,NULL);
Sleep(150000);
}
void Produce(){
cout生产者生产产品...endl;
cout生产成功endl;
}
DWORD WINAPI Producer(LPVOID lpPara){
while(TRUE){
WaitForSingleObject(hEmpty,INFINITE);
WaitForSingleObject(hMutex,INFINITE);
Pro