三个线程交替打印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

相关推荐

初级前端工程师,9-12k。避雷❗️❗️文字偏长,前端伙伴留。初面是线上,女面试官,疯狂问八股文。问到微信小程序说适配问题,我回答了像rpx,rem,vw和vh计算单位,利用获取屏幕高度宽度,用@media判断手机平板等。然后她问我你没用过epx单位吗,当时我就懵逼了,我确实没听说过。我说这可能是你们公司项目里面自己封装的单位吧,她说肯定有的你可以结束之后去百度看一看。面试结束之后我去百度了,也问了AI工具,查无此计算单位。复试更是离谱,复试去的线下。要说初面是关于前端的技术,复试已经不知道在面试什么了。开始上来就问栈,队列,二叉树一些数据结构。(我目前是毕业了一年多,加上实习共工作了两年,也都是前端的工作,确实对这些大学学的知识遗忘了)只回答了栈后进先出,队列先进先出。第二个问题是前端哪些地方要用到数据结构,我说数组和集合他都说这些太简单了,我让他举例子,他和我说上传图片需要用到哪些数据结构,我说了队列和数组,要记录好顺序,文件名称,大小,类型等。他和我说这也不算,我直接说我不知道让他回答,他和我说了一个图片的压缩。当时我就纳闷了,图片压缩要什么数据结构,我实在想不出来我就问他他也不回答。下一个问题是上传三个文件abc,如果只要c文件,那么a和b文件就会导致冗余,该怎么删除a和b。我说导致冗余的话那肯定是上传到服务器的桶里了,需要前后端配合,前端在传文件的时候可以在名称也可以在formdata上添加参数,例如表格的id,或者随机不唯一数,后端接收到之后根据参数执行是否覆盖。他就开始了,他说前端不允许携带任何参数该怎么实现,纯前端和纯后端怎么解决,我没回答上来了,我问他怎么实现他也不说。他又和我扯说桶是什么东西,他说我讲到现在他对桶的概念还是不懂。我说桶是对象存储,可以放置静态文件或前端打包后的文件放进的地方。他说他懂了,就是服务器上的文件夹…我说你要这么理解那也可以,他开始和我说桶是一些ui界面那些文件夹画的像桶,所以你们这么叫桶。我说你是没用过阿里云或者腾讯云吗,上面的bucket你不了解吗,他就开始打断话题说好好好你要和我扯这个也行。(起码我个人来讲,包括我自己搭建的云服务器还是目前公司的云产品来说,bucket是很常用的功能)避雷❗️❗️
查看6道真题和解析
点赞 评论 收藏
分享
评论
3
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务