线程的交换与移动

来源:互联网 发布:平民护肤品推荐 知乎 编辑:程序博客网 时间:2024/05/17 07:33


/*编写一个程序,开启3个线程,这3个线程的ID分别为A B C每个线程将自己的ID在屏幕上打印10遍,要求输出结果必须按ABC的顺序显示,如:ABCABC...依次递推。*/#include<iostream>#include<thread>#include<mutex>#include<Windows.h>#include<condition_variable>using namespace std;int LOOP = 10;int flag = 0;mutex m;condition_variable cv;void fun(int id){for (int i = 0; i < LOOP; i++){unique_lock<mutex>ulk(m);//设置锁定while ((id - 65) != flag){cv.wait(ulk);//不是该出现的场合,等待。}cout << (char)id << endl;flag = (flag + 1) % 3;//0 1 2  0 1 2...cv.notify_all();//通知所有}}void main(){thread t1(fun, 65);thread t2(fun, 66);thread t3(fun, 67);t1.join();t2.join();t3.join();cin.get();}


0 0
原创粉丝点击