多线程问题,实现三个线程顺序循环输出123123123...
阿里中间件笔试题记录:有三个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...相关推荐
- Java多线程:用三个线程控制循环输出10次ABC
题目:有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C,要求, 同时启动三个线程, 按顺序输出ABC, 循环10次. 解题思路:要按顺序输出ABC, 循环10次,就要控制三个线程同 ...
- java三个线程 顺序执行_如何确保三个线程顺序执行
三个线程t1.t2.t3.确保三个线程,t1执行完后t2执行,t2执行完后t3执行. 一.使用join thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程. ...
- java 多线程输出_[Java多线程]ABC三个线程顺序输出的问题
大概的问题是这样的: 有A,B,C三个线程, A线程输出A, B线程输出B, C线程输出C 要求, 同时启动三个线程, 按顺序输出ABC, 循环10次 这是一个多线程协同的问题, 本身多线程是没有执行 ...
- C++多线程学习(三)——线程同步之条件变量
前面学习了互斥量似乎我们就可以多线程编程了,多线程也不过如此嘛.然而我们上手coding,用多线程来结局我们实际需求就会发现,似乎多线程也不是很好用.因为我们实际对于多线程的需求,往往线程都是whil ...
- C++多线程并发(三)---线程同步之条件变量
文章目录 一.何为条件变量 二.为何引入条件变量 三.如何使用条件变量 更多文章: 一.何为条件变量 在前一篇文章<C++多线程并发(二)-线程同步之互斥锁>中解释了线程同步的原理和实现, ...
- 多线程:保证三个线程依次按顺序执行?newSingleThreadExecutor!!!
newSingleThreadExecutor 这个线程池,保证线程里面的任务依次执行,这让我发现了新大陆, 立马实践了一下,发现不负所望: public class TestJoin {public ...
- java多线程的写法三个线程_Java多线程的几种写法
Java多线程的在开发中用到的很多,简单总结一下几种写法,分别是继承Thread方法,实现Runnable接口,实现Callable接口: 1.继承Thread方法 class TestThread ...
- 设置三个线程顺序打印数字问题(转载)
第一种方法:通过共享对象锁的方式实现 记住调用wait方法时候需要在同步代码块内,否则会报java.lang.IllegalMonitorStateException异常! package com.t ...
- java多线程编程(三)- 线程的创建
一:线程说明 1,Java虚拟机允许应用程序并发的运行多个执行线程. 2,线程都有自己的优先级,新线程会继承创建它的线程优先级. 3,线程可以为守护线程和用户线程,如java资源回收线程为守护线程.当 ...
- 【多线程基础】- 多个线程顺序打印ABC
题目:3个线程名字分别是A,B,C 现在在console上连续打印10次 ABC . public class Test {public static void main(String[] args) ...
最新文章
- 100 行代码透彻解析 RPC 原理
- python实现终端3维数据可视化
- 全球及中国4-氨基间甲酚行业应用需求与发展策略分析报告2022版
- 学计算机的人都会CAD制图吗,CAD到底该如何学习?
- java 选择图片 显示不出来的_JAVA 窗体选择图片显示在窗体中
- win7下用docker部署的基于openvino的yolov5算法(二)openvino的docker镜像下载和安装
- NVIDIA 修复 GPU 驱动中的多个代码执行缺陷
- pdf.js跨域加载文件
- 使用Windows自带工具校验文件MD5
- Mybatis框架Mybatis下载步骤
- JavaScript算术运算中前加加与后加加
- seaweedfs入门
- java web 测试要点记录
- C++:C++11的牛逼特性
- 常用非线性优化算法总结
- php mysql 家谱_mysql家谱表查询某人所有后代
- onkeydown基本用法
- EVO 轨迹误差分析
- 自学JavaScript第一天- JS 基础
- Directsound开发指南(4)
热门文章
- iOS开发各种证书详解
- IE5的兼容问题——记录给自己看的
- 研究生从事学术研究的赫曼法则(The Laws of Herman)。
- Validation校验属性格式
- python导入自定义模块_python引入不同文件夹下的自定义模块方法
- Invalid bound statement (not found): org.seckill.dao.Suc
- 回归分析中的多重共线性问题
- 2.Hadoop_入门_模板机IP地址和主机名称配置
- 为什么亚马逊无货源是国际电商新时代
- 汉诺塔_-Chaz-_新浪博客