欢迎来到天天文库
浏览记录
ID:52814696
大小:33.00 KB
页数:4页
时间:2020-03-30
《生产者消费者完整代码.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、四、实现代码#include#includeconstunsignedshortSIZE_OF_BUFFER=10;//缓冲区长度unsignedshortProductID=0;//产品号unsignedshortConsumeID=0;//将被消耗的产品号unsignedshortin=0;//产品进缓冲区时的缓冲区下标unsignedshortout=0;//产品出缓冲区时的缓冲区下标intg_buffer[SIZE_OF_BUFFER];//缓冲区是个循环队列boolg_continue=true;//控制程序结
2、束HANDLEg_hMutex;//用于线程间的互斥HANDLEg_hFullSemaphore;//当缓冲区满时迫使生产者等待HANDLEg_hEmptySemaphore;//当缓冲区空时迫使消费者等待DWORDWINAPIProducer(LPVOID);//生产者线程DWORDWINAPIConsumer(LPVOID);//消费者线程intmain(){//创建各个互斥信号g_hMutex=CreateMutex(NULL,FALSE,NULL);g_hFullSemaphore=CreateSemaphore(NULL,SIZE_OF_BUFFER-
3、1,SIZE_OF_BUFFER-1,NULL);g_hEmptySemaphore=CreateSemaphore(NULL,0,SIZE_OF_BUFFER-1,NULL);//调整下面的数值,可以发现,当生产者个数多于消费者个数时,//生产速度快,生产者经常等待消费者;反之,消费者经常等待constunsignedshortPRODUCERS_COUNT=3;//生产者的个数constunsignedshortCONSUMERS_COUNT=1;//消费者的个数//总的线程数constunsignedshortTHREADS_COUNT=PRODUCERS
4、_COUNT+CONSUMERS_COUNT;HANDLEhThreads[PRODUCERS_COUNT];//各线程的handleDWORDproducerID[CONSUMERS_COUNT];//生产者线程的标识符DWORDconsumerID[THREADS_COUNT];//消费者线程的标识符//创建生产者线程for(inti=0;i5、urn-1;}//创建消费者线程for(i=0;i6、roducing"<<++ProductID<<"...";std::cerr<<"Succeed"<7、==in)std::cout<<"<--生产";if(i==out)std::cout<<"<--消费";std::cout<8、er[i];if(i==
5、urn-1;}//创建消费者线程for(i=0;i6、roducing"<<++ProductID<<"...";std::cerr<<"Succeed"<7、==in)std::cout<<"<--生产";if(i==out)std::cout<<"<--消费";std::cout<8、er[i];if(i==
6、roducing"<<++ProductID<<"...";std::cerr<<"Succeed"<7、==in)std::cout<<"<--生产";if(i==out)std::cout<<"<--消费";std::cout<8、er[i];if(i==
7、==in)std::cout<<"<--生产";if(i==out)std::cout<<"<--消费";std::cout<8、er[i];if(i==
8、er[i];if(i==
此文档下载收益归作者所有