1.等待事件

std::mutex m;
void wait()
{
std::unique_lock<std::mutex> lk(m);
lk.unlock();
std::this_thread::sleep_for(std::chrono::millisenconds(100));//休眠100毫秒
lk.lock();
}

2.条件变量等待条件

#include <queue>
#include <thread>
#include <mutex>
#include <condition_variable> std::mutex mut;
std::queue<data_chunk> data_queue;
std::condition_variable data_cond; void data_prepa()
{
data_chunk data; //准备数据
std::lock_guard<std::mutex> lk(mut);
data_queue.push(data);//将数据压入队列
data_cond.notify_one();//通知等待中的线程
} void data_process()
{
std::unique_lock<std::mutex> lk(mut); //这个地方必须用这个,不能用lock_guard,因为wait后,互斥元就会一直锁定
data_cond.wait( lk,[] {return !data_queue.empty();} ); //如果条件满足返回true,否则进行阻塞,并自动解锁互斥元
data_chunk data=data_queue.front();
data_queue.pop(); //出栈
lk.unlock();
}

最新文章

  1. Spring aop应用之实现数据库读写分离
  2. [LeetCode] Intersection of Two Arrays II 两个数组相交之二
  3. 使用NetBeans、Eclipse阅读JDK源码
  4. Mvc利用淘宝Kissy uploader实现图片批量上传附带瀑布流的照片墙
  5. 记一次mysql故障恢复
  6. [问题2014S09] 复旦高等代数II(13级)每周一题(第九教学周)
  7. Android Studio教程从入门到精通
  8. 【翻译】了解ASP.NET MVC的HTML助手
  9. mybatis动态SQL中的sql片段
  10. Shell 是个什么玩意
  11. Xcode 向6.0以后版本添加iOS开发空白模板
  12. PHP导出MySQL数据到Excel文件
  13. opengl离屏渲染(不需要和窗口绑定,仅当作一个可以渲染一张图片的API使用)+ opencv显示
  14. PHP 获得当前页面所有变量常量的值
  15. 201621123043 《Java程序设计》第3周学习总结
  16. 由ODI初始化资料档案库(RUC)引起修改ORACLE字符集(ZHS16GBK-AL32UTF8)
  17. 【jira】java.lang.OutOfMemoryError: GC overhead limit exceeded
  18. Go Deeper HDU - 3715(2 - sat 水题 妈的 智障)
  19. 深度学习课程笔记(十六)Recursive Neural Network
  20. Hive的用法

热门文章

  1. i春秋登录
  2. 【Serverless】Unity快速集成认证服务实现邮件登录
  3. servlet包找不到,webservlet注解无效
  4. 解决manjaro无法连接github问题
  5. 探讨Morest在RESTful API测试的行业实践
  6. JVM面试点汇总
  7. Zabbix技术分享——使用docker-compose快速部署zabbix监控系统
  8. vue3 + element plus 使用字节跳动图标
  9. 玩好.NET高级调试,你也要会写点汇编
  10. Elasticsearch提示low disk watermark [85%] exceeded on [UTyrLH40Q9uIzHzX-yMFXg][Sonofelice][/Users/baid...