码迷,mamicode.com
首页 > 编程语言 > 详细

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

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

标签:style   http   color   os   io   strong   for   ar   

题目:子线程循环 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

标签:style   http   color   os   io   strong   for   ar   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!