文档介绍:精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
//*******************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