阿里中间件笔试题记录:有三个worker线程:worker1、worker2、worker3。三个线程分别只能输出1、2、3。请写出代码,实现三个线程顺序循环输出123123123...

#include <iostream>
#include <thread>//thread
#include <condition_variable>//condition_variable
#include <vector>
#include <algorithm>//for_each
using namespace std;
mutex mtx;
condition_variable cv;
int printThis = 1;//要输出的数
int loopTimes = 100;//循环次数
int workersNum = 3;//线程数
void work(int num) {for (int i = 0; i < loopTimes; i++) {unique_lock<mutex>ulk(mtx);cv.wait(ulk, [num] {return num == printThis; });cout /*<< std::this_thread::get_id() << ":" */<< num/* << endl*/;printThis = num % workersNum + 1;//转到下一个线程ulk.unlock();cv.notify_all();}
}int main() {vector<thread> workers(workersNum);for (int i = 1; i <= workersNum; ++i)workers[i-1] = thread(work, i);for_each(workers.begin(), workers.end(), mem_fn(&thread::join));//cout << "完成";getchar();return 0;
}

多线程问题,实现三个线程顺序循环输出123123123...相关推荐

  1. Java多线程:用三个线程控制循环输出10次ABC

    题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次. 解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同 ...

  2. java三个线程 顺序执行_如何确保三个线程顺序执行

    三个线程t1.t2.t3.确保三个线程,t1执行完后t2执行,t2执行完后t3执行. 一.使用join thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程. ...

  3. java 多线程输出_[Java多线程]ABC三个线程顺序输出的问题

    大概的问题是这样的: 有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C 要求, 同时启动三个线程, 按顺序输出ABC, 循环10次 这是一个多线程协同的问题, 本身多线程是没有执行 ...

  4. C++多线程学习(三)——线程同步之条件变量

    前面学习了互斥量似乎我们就可以多线程编程了,多线程也不过如此嘛.然而我们上手coding,用多线程来结局我们实际需求就会发现,似乎多线程也不是很好用.因为我们实际对于多线程的需求,往往线程都是whil ...

  5. C++多线程并发(三)---线程同步之条件变量

    文章目录 一.何为条件变量 二.为何引入条件变量 三.如何使用条件变量 更多文章: 一.何为条件变量 在前一篇文章<C++多线程并发(二)-线程同步之互斥锁>中解释了线程同步的原理和实现, ...

  6. 多线程:保证三个线程依次按顺序执行?newSingleThreadExecutor!!!

    newSingleThreadExecutor 这个线程池,保证线程里面的任务依次执行,这让我发现了新大陆, 立马实践了一下,发现不负所望: public class TestJoin {public ...

  7. java多线程的写法三个线程_Java多线程的几种写法

    Java多线程的在开发中用到的很多,简单总结一下几种写法,分别是继承Thread方法,实现Runnable接口,实现Callable接口: 1.继承Thread方法 class TestThread ...

  8. 设置三个线程顺序打印数字问题(转载)

    第一种方法:通过共享对象锁的方式实现 记住调用wait方法时候需要在同步代码块内,否则会报java.lang.IllegalMonitorStateException异常! package com.t ...

  9. java多线程编程(三)- 线程的创建

    一:线程说明 1,Java虚拟机允许应用程序并发的运行多个执行线程. 2,线程都有自己的优先级,新线程会继承创建它的线程优先级. 3,线程可以为守护线程和用户线程,如java资源回收线程为守护线程.当 ...

  10. 【多线程基础】- 多个线程顺序打印ABC

    题目:3个线程名字分别是A,B,C 现在在console上连续打印10次 ABC . public class Test {public static void main(String[] args) ...

最新文章

  1. 100 行代码透彻解析 RPC 原理
  2. python实现终端3维数据可视化
  3. 全球及中国4-氨基间甲酚行业应用需求与发展策略分析报告2022版
  4. 学计算机的人都会CAD制图吗,CAD到底该如何学习?
  5. java 选择图片 显示不出来的_JAVA 窗体选择图片显示在窗体中
  6. win7下用docker部署的基于openvino的yolov5算法(二)openvino的docker镜像下载和安装
  7. NVIDIA 修复 GPU 驱动中的多个代码执行缺陷
  8. pdf.js跨域加载文件
  9. 使用Windows自带工具校验文件MD5
  10. Mybatis框架Mybatis下载步骤
  11. JavaScript算术运算中前加加与后加加
  12. seaweedfs入门
  13. java web 测试要点记录
  14. C++:C++11的牛逼特性
  15. 常用非线性优化算法总结
  16. php mysql 家谱_mysql家谱表查询某人所有后代
  17. onkeydown基本用法
  18. EVO 轨迹误差分析
  19. 自学JavaScript第一天- JS 基础
  20. Directsound开发指南(4)

热门文章

  1. iOS开发各种证书详解
  2. IE5的兼容问题——记录给自己看的
  3. 研究生从事学术研究的赫曼法则(The Laws of Herman)。
  4. Validation校验属性格式
  5. python导入自定义模块_python引入不同文件夹下的自定义模块方法
  6. Invalid bound statement (not found): org.seckill.dao.Suc
  7. 回归分析中的多重共线性问题
  8. 2.Hadoop_入门_模板机IP地址和主机名称配置
  9. 为什么亚马逊无货源是国际电商新时代
  10. 汉诺塔_-Chaz-_新浪博客