首页 > 编程语言 > 详细

c++11线程之条件变量condition_variable

时间:2014-08-21 15:02:14      阅读:401      评论:0      收藏:0      [点我收藏+]

题目:子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。

  1. #include<iostream>   
  2. #include<thread>   
  3. #include<mutex>   
  4. #include<condition_variable>   
  5. using namespace std;  
  6. mutex m;  
  7. condition_variable cond;  
  8. int flag=10;  
  9. void fun(int num){  
  10.     for(int i=0;i<50;i++){  
  11.         unique_lock<mutex> lk(m);//A unique lock is an object that manages a mutex object with unique ownership in both states: locked and unlocked.   
  12.         while(flag!=num)  
  13.             cond.wait(lk);//在调用wait时会执行lk.unlock()   
  14.         for(int j=0;j<num;j++)  
  15.             cout<<j<<" ";  
  16.         cout<<endl;  
  17.         flag=(num==10)?100:10;  
  18.         cond.notify_one();//被阻塞的线程唤醒后lk.lock()恢复在调用wait前的状态   
  19.     }  
  20. }  
  21. int main(){  
  22.     thread child(fun,10);  
  23.     fun(100);  
  24.     child.join();  
  25.     return 0;  

c++11线程之条件变量condition_variable,布布扣,bubuko.com

c++11线程之条件变量condition_variable

原文:http://blog.csdn.net/jiangheng0535/article/details/38729845

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!