三个线程交替打印ABC

三个线程交替打印ABC
#include<iostream>
#include<thread>
#include<mutex>
#include<condition_variable>
using namespace std;
mutex mtx;
condition_variable cv;
int flag=0;

void printA(){
  unique_lock<mutex> lk{mtx};
  int cnt=0;
  while(cnt<10){
     while(flag!=0){
        cv.wait(lk);
     }
     cout<<"A"<<endl;
     flag=1;
     cnt++;
     cv.notify_all();
  }
}

void printB(){
  unique_lock<mutex> lk{mtx};
  int cnt=0;
  while(cnt<10){
     while(flag!=1){
        cv.wait(lk);
     }
     cout<<"B"<<endl;
     flag=2;
     cnt++;
     cv.notify_all();
  }
}

void printC(){
  unique_lock<mutex> lk{mtx};
  int cnt=0;
  while(cnt<10){
     while(flag!=2){
        cv.wait(lk);
     }
     cout<<"C"<<endl;
     flag=0;
     cnt++;
     cv.notify_all();
  }
}

int main(){
  thread t1(printA);
  thread t2(printB);
  thread t3(printC);
  t1.join();
  t2.join();
  t3.join();
  return 0;
}
全部评论
这个实现厉害了
点赞 回复 分享
发布于 2022-08-10 13:50

相关推荐

评论
2
3
分享

创作者周榜

更多
牛客网
牛客企业服务