第一步: 设置unique_lock<mutex> ulk(m) //设定锁定
第二步: 每一个线程在循环中等待, cv.wait(ulk) //不是该出现的场合等着
第三步: cv.notify_all() //通知其他的线程,进行执行
// // Created by Administrator on 2021/7/2. // #include<iostream> #include<thread> #include<mutex> #include<condition_variable> using namespace std; int LOOP = 10; int flag = 0; mutex m; condition_variable cv; //012012012 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) % 4; // cv.notify_all(); //通知全部 } } int main() { thread t1(fun, 65); thread t2(fun, 66); thread t3(fun, 67); thread t4(fun, 68); t1.join(); t2.join(); t3.join(); t4.join(); }