#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
#include <array>
#include <vector>
using namespace std; //通过mutex 等待事件响应
condition_variable isfull, isempty;//处理两种情况
mutex m;
bool flag = true;//标识,消费完了就退出
vector<int> myint;//开辟十个元素 void put(int num)
{
for (int i = ; i < num; i++)
{
unique_lock<mutex> lk(m);//锁定
while (myint.size() >= )
{
//一直等待有空位才生产
isempty.wait(lk);
} myint.push_back(i);
cout << "生产了" << i << endl;
//激活isfull
isfull.notify_all(); this_thread::sleep_for(chrono::milliseconds());
}
flag = false;
} void take()
{
while (flag)
{
unique_lock<mutex> lk(m);//锁定
while (myint.size() == )
{
//一直等待有生产后才执行,(等待到激活后才可以执行)
isfull.wait(lk);
} if (flag)
{
cout << "消费了" << myint[myint.size() - ] << endl;
myint.pop_back();//消除
//激活isempty
isempty.notify_all();
}
}
} void main()
{
thread t1(take);
thread t2(take);
thread t3(take);
thread t4(put,);
cin.get();
}

最新文章

  1. Android客户端性能测试(一):使用APT测试Android应用性能
  2. Source Insight 使用
  3. php操作memcache的使用【转】
  4. Xamarin.Form 实例: Discuz BBS 客户端 源码分享
  5. webtest 文章
  6. C#下实现的半角转与全角的互转
  7. php笔记02:整型细节说明
  8. [一个经典的多线程同步问题]解决方案一:关键段CS
  9. PB+MS SQL+触发器必须指出
  10. JTree demo
  11. 深入理解C指针之三:指针和函数
  12. 浙大pat1013题解
  13. Java基础语法&lt;一&gt; 数据类型&amp;运算符
  14. [android游戏开发初学]简单的游戏框架
  15. Thinkphp3.2版本使用163邮箱发(验证码)邮件
  16. Ajax 异步加载
  17. get() got an unexpected keyword argument
  18. Python&#183;——进程1
  19. zabbix yum安装
  20. 【1】vue/cli 3.0 脚手架 及cube-ui 安装

热门文章

  1. 【SRM 717 div2 A】 NiceTable
  2. Spring Cloud分布式Session共享实践
  3. Xcode加入应用图标以及启动界面
  4. 如何在IDEA中创建web项目并且部署到Tomcat中
  5. 利用css3的多背景图属性实现幻灯片切换效果
  6. netflix zuul 1.x与zuul2.x之比较
  7. 用json2.js 代替 json.js防止与jQuery的js冲突
  8. How Chromium Displays Web Pages: Bottom-to-top overview of how WebKit is embedded in Chromium
  9. javaScript for in循环遍历对象
  10. codeforces111D. Petya and Coloring(组合数学,计数问题)