交替打印ABC多线程(互斥量+条件变量)
Posted 每天告诉自己要努力
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交替打印ABC多线程(互斥量+条件变量)相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <thread>
#include <mutex>
#include <condition_variable>
using namespace std;
mutex mymutex; //全局锁
condition_variable cv;//全局条件变量
int flag = 0;
void func_a()
unique_lock<mutex> locka(mymutex);
for (int i = 0; i < 5; i++)
while (flag != 0) cv.wait(locka);
//如果falg == 0,不会阻塞,直接运行后面的
cout << "thread1: A" << endl;
flag = 1;
cv.notify_all();
cout << "thread1 finsh" << endl;
void func_b()
unique_lock<mutex> lockb(mymutex);
for (int i = 0; i < 5; i++)
while (flag != 1) cv.wait(lockb);
//如果falg == 1,不会阻塞,直接运行后面的
cout << "thread2: B" << endl;
flag = 2;
cv.notify_all();
cout << "thread2 finsh" << endl;
void func_c()
unique_lock<mutex> lockc(mymutex);
for (int i = 0; i < 5; i++)
while (flag != 2) cv.wait(lockc);
//如果falg == 2,不会阻塞,直接运行后面的
cout << "thread3: C" << endl;
flag = 0;
cv.notify_all();
cout << "thread2 finsh" << endl;
int main()
thread th1(func_a);
thread th2(func_b);
thread th3(func_c);
th1.join();
th2.join();
th3.join();
return 0;
以上是关于交替打印ABC多线程(互斥量+条件变量)的主要内容,如果未能解决你的问题,请参考以下文章