博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
通过N个线程顺序循环打印从0至100
阅读量:6927 次
发布时间:2019-06-27

本文共 897 字,大约阅读时间需要 2 分钟。

  hot3.png

如:

通过N个线程顺序循环打印从0至100,如给定N=3则输出:thread0: 0thread1: 1thread2: 2thread0: 3thread1: 4.....

解:N个线程对应N个条件变量,依次激活下一个线程

#include 
#include
#include
#include
#include
constexpr int THREADS = 3;constexpr int MAX = 100;std::mutex m;std::condition_variable cv[THREADS];bool flags[THREADS];int n = 0;void f(int i){ const int next = (i + 1) % THREADS; for (;;) { std::unique_lock
lock(m); cv[i].wait(lock, [=](){return flags[i];}); if (n <= MAX) std::cout << "thread " << i << ": " << n++ << std::endl; flags[i] = false; flags[next] = true; lock.unlock(); cv[next].notify_one(); if (n > MAX) break; }}int main(){ flags[0] = true; std::vector
vec; for (int i = 0; i < THREADS; ++i) vec.emplace_back(f, i); for (auto &t: vec) t.join(); return 0;}

 

转载于:https://my.oschina.net/guzhou/blog/3023693

你可能感兴趣的文章
JavaScript内置对象(一)
查看>>
python中if __name__ == "__main__":用法解析
查看>>
linux - RAID技术
查看>>
python的subprocess模块
查看>>
java转换ppt,ppt转成图片,获取备注,获取文本
查看>>
linux命令:passwd
查看>>
Python 标准异常总结
查看>>
linux 管理技巧
查看>>
实验-----通过loganalyzer展示数据库中的日志
查看>>
面试题整理_01
查看>>
CentOS7定制封装发行版-基于CentOS minimal
查看>>
windows的一大堆补丁,如何批量按装呢
查看>>
keepalived高可用lvs集群,主/备和主/主模型
查看>>
写在SQL注入后
查看>>
shell之函数
查看>>
hp 380G5 安装centos 7
查看>>
jsoncpp 用法
查看>>
linux 使用pssh批量部署tomcat
查看>>
使用Statistics命令查看Netapp存储实时性能统计数据
查看>>
计费程序(客户端)
查看>>