C++ - 在线程之间传递数据

C++ - Passing data between threads

本文关键字:数据 之间 线程 C++      更新时间:2023-10-16

我有一个由 4 个线程组成的线程池:t1、t2、t3 和 t4。它们同时运行,但来自 t3 和 t4 的输入取决于来自 t2 的输出。如何实现消息队列,让 t2 完成后将输出数据发送到 t3 和 t4 进行处理?我尝试使用锁定机制实现消息队列,但似乎锁定非常昂贵。是否有在线程之间传递数据的无锁机制?我在Visual Studio 2010中使用boost::thread。

Boost 有一个无锁队列:http://www.boost.org/doc/libs/1_56_0/doc/html/lockfree.html。

你可以考虑 tbb。它提供了广泛的并行概念,包括concurrent_queueconcurrent_bounded_queue(用于等待)、pipelineflow::graph。前两个在 MS VS 2010 中的 ppl 中也可用。