博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
生产者消费者问题2
阅读量:6853 次
发布时间:2019-06-26

本文共 764 字,大约阅读时间需要 2 分钟。

1 //生产者消费者问题 2 //使用事件和互斥量实现 3 //缓冲区只能放一个产品 4  5 //有人可能疑问,为什么不能用两个互斥量来实现同步, 6 //像使用两个事件一样。因为互斥量具有线程所有的概念, 7 //等待函数执行后,互斥量会保存当前线程id,表示这个互斥量属于这个线程。 8 //当你在另一个线程Release这个互斥量时,因为互斥量保存的线程ID与当前 9 //线程ID不一致,操作将返回FALSE。10 #include 
11 #include
12 13 //互斥量14 HANDLE g_hMutex;15 //事件16 HANDLE g_hEventBufferEmpty, g_hEventBufferFull; 17 //缓冲区,只能放一个产品18 int g_Buffer; 19 20 DWORD WINAPI ProducterThreadFunc(PVOID pM)21 {22 int i;23 for(i = 1; i <= 10; i++)24 {25 WaitForSingleObject(g_hEventBufferEmpty, INFINITE);26 //等待互斥量被释放(触发)27 WaitForSingleObject(g_hMutex, INFINITE);28 29 g_Buffer = i;30 std::cout<<"生产者放入产品:"<
<

 

转载于:https://www.cnblogs.com/ibosong/p/3332596.html

你可能感兴趣的文章
关于scrolltop 兼容 IE6/7/8, Safari,FF的方法
查看>>
PRIu64宏—打印输出64位整型值
查看>>
command设计模式
查看>>
postgresql数据类型之时间类型
查看>>
virtualmin proftpd cuteftp下如何显示.开头隐藏文件
查看>>
第16章 C预处理器和C库 16.5 文件包含: #include
查看>>
关于Goertzel
查看>>
No module named mysqldb
查看>>
vue获取input输入框的数据
查看>>
Go标准库testing进行有序代码测试
查看>>
linux 常用软件安装整理
查看>>
每周总结20130829——Android异步任务
查看>>
编译原理--词法分析程序
查看>>
springMVC 中几种获取request和response的方式
查看>>
vector与ArrayList、hashmap与hashtable区别
查看>>
一个简单系统的设计之争
查看>>
如何配置Kettle集群运行环境
查看>>
Jmeter分布式测试
查看>>
Centos6.9系统部分基础优化(更新时间2018/04/19)
查看>>
一次浏览器http请求的过程
查看>>