1 / 3
文档名称:

生产者消费者算法c 版(共3页).doc

格式:doc   大小:22KB   页数:3页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

生产者消费者算法c 版(共3页).doc

上传人:bb21547 2022/3/13 文件大小:22 KB

下载得到文件列表

生产者消费者算法c 版(共3页).doc

相关文档

文档介绍

文档介绍:精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
//*******************hread[i]==NULL) return -1;
}
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
//创建消费者线程
for (i=0;i<CONSUMERS_COUNT;++i){
hConsumerThread[i]=CreateThread(NULL,0,Consumer,NULL,0,&consumerID[i]);
if (hConsumerThread[i]==NULL) return -1;
}
if(getchar()){ //按回车后终止程序运行
g_continue = false;
}
return 0;
}
//生产者把新生产的产品放入缓冲区
void AddToBuffer()
{
ProductID++; //生产者生产出产品号
g_buffer[in].productID = ProductID;//将产品放入缓冲单元
g_buffer[in].state=1;//置“满”标志
//输出缓冲队列当前的状态
cout<<"\n生产者将产品"<<ProductID<<" 放入缓冲单元"<<in<<" ,缓冲队列当前状态为:"<<endl;
cout<<"缓冲单元编号"<<" "<<"产品编号"<<" "<<"缓冲单元状态"<<endl;
for (int i=0;i<SIZE_OF_BUFFER;i++){
cout<<" "<<i<<" "<<g_buffer[i].productID<<" "<<g_buffer[i].state<<endl;
}
in = (in+1)%SIZE_OF_BUFFER;//更新指针,使其指向生产者下一次需要操作的缓冲单元
}
//从缓冲区中取出一个产品
void TakeFromBuffer()
{
ConsumeID = g_buffer[out].productID;//从缓冲队列中取出一个产品
g_buffer[out].productID=0;//删除该缓冲单元内容
g_buffer[out].state=0;//置“空”标识
//输出缓冲队列当前的状态
cout<<"\n消费者从缓冲单元"<<out<<" 将产品"<<ConsumeID<<" 取出,缓冲队列当前状态为:"<<endl;
cout<<"缓冲单元编号"<<" "<<"产品编号"<<" "<<"缓冲单元状态"<<endl;
for (int i=0;i<SIZE_OF_BUFFER