写的不成功,各位有更好的方法请留言

// https://blog.csdn.net/c_base_jin/article/details/89741247
#include <Windows.h>
#include <iostream>           // std::cout
#include <thread>             // std::thread
#include <mutex>              // std::mutex, std::unique_lock
#include <condition_variable> // std::condition_variable
std::mutex mtx,mut;
std::condition_variable cv;
bool ready = false;
int g_data[5]= { 0,1,2,3,4 };
using namespace std;
constexpr auto N = 5;
int now = 0;
void go() {//unique_lock<std::mutex> lck(mtx);ready = true;cv.notify_all(); // 这是重点
}
void f(int m_id) {int m_last;int m_data[5];if (m_id == 0)m_last = N - 1;else m_last = m_id - 1;cout << "启动 " << m_id << endl;for (int i = 1; i < N; ) {std::unique_lock<std::mutex> lck(mtx);while(!ready)cv.wait(lck);//ready = false;if (now == m_id) {cout << m_id << "号线程第" << i << "次接受信息" << endl;i++;mut.lock();now++;mut.unlock();std::copy(std::begin(g_data), std::end(g_data), std::begin(m_data));if (now == N) {mut.lock();now = 0;mut.unlock();}std::copy(std::begin(m_data), std::end(m_data), std::begin(g_data));Sleep(300);ready = false;go();}}cout << m_id << "号线程结束" << endl;return;
}
std::thread threads[N+1];
int main()
{for (int i = 0; i < N; i++) {threads[i] = std::thread(f, i);}cout << "线程设置完成,开始:" << endl;go();  for (int i = 0; i < N; i++) {threads[i].join();}return 0;
}

多线程依次接收信息并发送相关推荐

  1. tim-js-sdk 登录、接收信息、发送消息

    简介 本文主要介绍如何快速地将腾讯云 IM SDK 集成到您的 Web 项目中. 腾讯云即时通信IM SDK API 文档 示例demo下载 tim-js-sdk 功能扩展 (好友接口) 准备工作 在 ...

  2. 蓝桥杯51单片机之串口通信发送接收信息【单片机开发初学者串口必会】

    文章目录 一.上位机发送信号控制单片机 1.显示对应的流水灯 2.显示对应数码管 3.控制数码管显示的数字 二.两机收发信息 一.上位机发送信号控制单片机 1.显示对应的流水灯 实现现串口通信接收上位 ...

  3. imssage用服务器怎么发信息,iMessage 信息如何安全发送和接收信息

    iMessage 信息如何安全发送和接收信息 用户通过输入一个地址或姓名来开始一次新的 iMessage 对话.如果他们输入一个电话号码或电子邮件地址,设备就会与 Apple 身份识别服务 (IDS) ...

  4. 《飞鸽传书下载》发送和接收信息

    随着信息交流的日益频繁,用户渴望更轻松地<飞鸽传书下载>发送和接收信息,发布短信更加简捷,是"语音短信"类产品的一大优势. 企业即时通讯能够解决什么问题?企业即时通讯是 ...

  5. 微信小程序websocket连接服务器(接收信息)

    app.js App({onLaunch: function () {var that = this;// 登录wx.login({success: res => {// 发送 res.code ...

  6. 服务器多线程定时发送消息,C++Socket 多线程编程 定时和定量发送数据

    C++Socket 多线程编程 定时和定量发送数据 C++Socket 多线程编程 定时和定量发送数据 C++ Socket API中 发送函数Send和接收函数Recv函数的调用不一定是1对1的关系 ...

  7. PyQt+Opencv-python多线程显示摄像头信息至QLabel,摄像头显示区域自由拉伸尺寸

    文章目录 前言 效果 资源下载 核心代码 编程思路 Camera.py Widget.py 前言   通过PyQt与Opencv-python实现多线程显示摄像头信息至QLabel,可以同时拉伸窗口, ...

  8. unity网络实战开发(丛林战争)-前期知识准备(004-开发TCP客户端的接收数据和发送数据)

    使用工具:VS2015 使用语言:c# 作者:Gemini_xujian 参考:siki老师-<丛林战争>视频教程 继上一篇文章内容,这节课讲解一下客户端的接收数据和发送数据. 首先在现有 ...

  9. c# tcpip 通信 Task线程接收信息

    1 c# tcpip通信-用线程实现数据接收与发送 针对用定时器实现数据接收过程出现的界面卡死现象,本次采用线程进行数据接收过程.服务端和客户端如图1所示. 图1 服务端和客户端 2 程序讲解 c# ...

最新文章

  1. SFTP命令基本使用
  2. 堆木板问题——木板能堆无限远而不倒吗?
  3. Java学习day011(oop):
  4. MariaDB 10.0 和 MySQL 5.6 有何不同
  5. php如何统计数组的个数,如何用php统计数组元素的个数(附代码)
  6. 手机这5个反人类的设计,你能容忍到第几个?
  7. 戴森吸尘器被《消费者报告》从推荐名单除名:不耐用
  8. python编程入门-最好的Python入门教材是哪本?
  9. Thymeleaf $/*/#/@语法
  10. Failed to connect to bitbucket.org port 443: Operation timed out
  11. JUC中的原子类总结
  12. HTML:常用特殊字符编码表(自用)
  13. jQuery-zTree插件使用
  14. 视频教程-HTML零基础经典入门视频-HTML5/CSS
  15. DGUS组态软件中图标旋转显示如何使用
  16. fastadmin中selectpage条件wherein添加
  17. VS 制作自定义安装程序
  18. AI实战:文本自动摘要简述
  19. 回归分析-(多元)线性回归分析基础( Linear Regression)
  20. Appium 自动化用例设计(TESTNG 篇)

热门文章

  1. cacti配置流量汇总
  2. linux lvs 存储层,LVS集群配置之LVS介绍
  3. ERROR 1064 (42000): You have an error in your SQL syntax
  4. 微博同步ValidatorException
  5. 【爆牙齿】说说我期待中的苹果那块板子。
  6. python2和python3的区别 print-Python2与Python3中print用法总结
  7. Unicode16 与 UTF-8编码之间的转换
  8. linux内核mtd驱动程序与sd卡驱动程序,Linux内核MTD驱动程序与SD卡驱动程序(2)
  9. cocos2d-x 动画工具 Flash2Cocos2d-x
  10. Starling 性能优化方案