促进线程间通信
Boost Interthread Communication
我必须实现boost线程间通信。请考虑以下代码:
#include <boost/thread/thread.hpp>
#include <Windows.h>
void threadA()
{
while(true)
{
std::cout << "From thread A" << std::endl;
Sleep(3000); //pretend to do the work
}
}
void threadB()
{
while(true)
{
std::cout << "From thread B" << std::endl;
Sleep(3000); //pretend to do the work
}
}
int main()
{
boost::thread *th1 = new boost::thread(&threadA);
boost::thread *th2 = new boost::thread(&threadB);
th1->join();
th2->join();
delete th1;
delete th2;
}
如果我运行上面的代码,它将生成两个线程。我想做的是启动threadA
并向threadB
发送一些消息,收到后将启动线程。或者更一般地说,如果这两个线程独立运行,我如何处理通信?
有很多方法。
- 使用条件变量(又名事件)
- 使用并发队列(例如消息)或更一般的信号量
- 使用无锁并发数据结构
Boost 提供了上述所有内容的实现。
相关文章:
- C++一个线程如何正确通信其任务已完成?
- 通过插槽和信号在不同线程中的两个qt对象之间进行通信
- 线程之间的通信不起作用 - C++
- 关于套接字通信的线程
- ZeroMQ:如何使用inproc减少多线程通信延迟
- 用于线程间通信的 Windows 套接字
- 与处理 ZeroMQ 的永久线程与 Qt 通信
- 与非主线程的 GUI 线程通信
- 使用 C++14 和 GLib (GDBus) 的线程通信
- 使用Protobuf进行线程通信
- C 14中的乘数交叉线程通信
- 串口读取功能的通信超时和线程不超时
- 使用PTHREDS与C 进行线程通信
- Qt中的多线程通信
- 远程、IPC 和线程场景中微服务的低延迟通信
- C++ - 多线程 - 线程之间的通信
- 线程中的通信丢失
- 与OpenSSL的多线程通信
- main()和线程()之间的通信
- Qt多线程通信