并发 练习代码

#include <thread>
#include <vector>
#include <mutex>
#include <iostream>using namespace std;std::mutex mtx;
std::condition_variable cv;char arr[] = { 'a','b','c' };
char message = 'a';void test(int i) {for(int j = 0 ;j < 10;++j){std::unique_lock<std::mutex> lk(mtx);cv.wait(lk, [=] {return message == arr[i]; });std::cout << arr[i];message = arr[(i + 1) % 3];lk.unlock();cv.notify_all();}
}int main()
{std::thread t[3];for (int i = 0; i < 3; ++i) {t[i] = std::thread(test,i);}for (int i = 0; i < 3; ++i) {t[i].join();}std::cout << std::endl;return 0;
}

转载于:https://www.cnblogs.com/itdef/p/8193571.html

c++11 多线程依次打印ABC相关推荐

  1. linux多线程顺序打印abc,c++11 多线程依次打印ABC

    并发 练习代码 #include #include #include #include using namespace std; std::mutex mtx; std::condition_vari ...

  2. java多线程交替打印abc

    你可以使用 synchronized 和 wait / notify 来实现多线程交替打印abc. 以下是一个示例代码: public class PrintABC {private intstate ...

  3. 多线程依次打印abcabc

    网络原题: 编写一个程序,开启3个线程,这3个线程的ID分别为A.B.C,每个线程将自己的ID在屏幕上打印10遍,要求输 出结果必须按ABC的顺序显示:如:ABCABC-.依次递推 这里设置ITEM= ...

  4. java多线程循环打印abc,使用java多线程顺序打印“ABCABC”

    一.几个基本概念的区分 1.进程与程序的区分 程序 进程 包含代码部分.数据部分 包含代码部分.数据部分.进程控制块 顺序执行 并发执行 独占资源 共享资源 同步的 异步的 静态的 动态的 (本质区别 ...

  5. Linux编程题:信号量同步三进程依次打印若干次ABC

    三个进程依次打印ABC..... 思路及大致流程如下: 思路取自这位大哥: Linux编程题:创建3个线程分别打印abc,用信号量进行同步_cleverlemon的博客-CSDN博客 这位大哥写的是线 ...

  6. 让3个线程打印ABC

    让3个线程依次打印ABC,是一个常见的(面试)问题,这是阿里和华为都有考过的面试题.比如题目描述如下: 编写一个程序,开启三个线程,这三个线程按照顺序依次打印ABC,每个字母打印10次后结束,最后结果 ...

  7. python两个线程交替打印_三线程按顺序交替打印ABC的四种方法

    建立三个线程A.B.C,A线程打印10次字母A,B线程打印10次字母B,C线程打印10次字母C,但是要求三个线程同时运行,并且实现交替打印,即按照ABCABCABC的顺序打印. 二.Synchroni ...

  8. 算法移植优化(四)c++11 多线程

    c++11多线程库:std::thread 一.join函数:用于等待线程对象运行结束 程序从main函数开始,本来由一个线程执行:当执行到std::thread定义一个线程对象,给定初始构造函数后, ...

  9. 多线程顺序打印的5种解法

    多线程同步的方式有许多,有传统的synchronized锁,还可以使用lock锁,下面列举多线程顺序打印的5种解法,算作对线程同步的一个总结. 文章目录 经典面试题 多种解法 使用 Lock 使用 w ...

  10. 三个线程交替打印ABC(Condition实现精确通知)

    三个线程交替打印ABC: package pc;import java.util.concurrent.locks.Condition; import java.util.concurrent.loc ...

最新文章

  1. SQLite与pandas
  2. GitHub标星2000+,如何用30天啃完TensorFlow2.0?
  3. 搭建阿里云ecs服务器(一:购买)
  4. 锁究竟锁住的是什么?
  5. openwrt系统安装到云服务器异常,OpenWrt路由器系统下服务OpenClash 安装教程及其折腾踩坑记录...
  6. 使用jclouds在S3上分段上传
  7. PyTorch系列 | 如何加快你的模型训练速度呢?
  8. 一个技术人员必须考虑的问题:转型
  9. Python+pillow计算椭圆图形几何中心
  10. CyaSSL 2.4.6 发布,SSL 加密库
  11. 数据采集之登录那些事
  12. SYNOPSYS DDR VIP use note
  13. python list 迭代_python迭代、列表生成式
  14. 杂谈:编程解决水管工游戏
  15. 阿里云ECS服务器配置ubuntu安装openfire服务器
  16. 33岁跨专业考计算机研究生,盲目跨专业考研考上以后也不轻松
  17. Cmn组合数c语言,计算并输出组合数Cmn……不会打……要求递归……谢谢
  18. 流式数据架构理论 ◆ 基本概念
  19. docker 容器启动提示,ipv4不能被使用
  20. new DecimalFormat(#0.###)中0与#

热门文章

  1. server2012文件服务器的开始按钮,Windows Server 2012实用技巧集锦
  2. 浅析单调递增子序列问题(LIS)
  3. int main(argc,char *argv[])的含义
  4. 【模板】lucas定理和扩展lucas定理(组合数取模)
  5. C/C++[codeup 2046]8皇后
  6. CNN是如何一层一层'理解'图像信息的
  7. 算法:分离链表为两部分,小于某个值都在左边,大于等于某个值在右边 Partition List
  8. python的符号lt和gt怎么输入_lt;lt;Python基础教程gt;gt;学习笔记 | 第04章 | 字典...
  9. 凸优化第六章逼近与拟合 6.4鲁棒逼近
  10. 现代通信原理:月考(二)答案