1 //编写一个 程序,开启3个线程,这3个线程的ID分别为A,B,C
2 //每个线程将自己的ID在屏幕打印10遍
3 //要求输出结果必须按ABC的顺序显示
4 #include <iostream>
5 #include <thread>
6 #include <mutex>
7 #include <condition_variable>
8 using namespace std;
9
10 int LOOP =
10;
11 int flag =
0;
12
13 mutex m;
14 condition_variable cv;
15
16 void fun(
int id)
17 {
18 for (
int i =
0; i < LOOP; i++
)
19 {
20 //设置锁定
21 unique_lock<mutex>
ulk(m);
22 while(id !=
flag)
23 {
24 //不是该出现的场合则继续等待通知,然后再执行while判断
25 cv.wait(ulk);
26 }
27 //输出
28 char ch =
'A' +
id;
29 cout <<
ch;
30 flag = (flag +
1) %
3;
31 //通知全部
32 cv.notify_all();
33 }
34 }
35
36 void main()
37 {
38 thread t1(fun,
0);
39 thread t2(fun,
1);
40 thread t3(fun,
2);
41 t1.join();
42 t2.join();
43 t3.join();
44
45 cin.
get();
46 }
转载于:https://www.cnblogs.com/xiaochi/p/8549661.html
相关资源:数据结构—成绩单生成器