标签: c++ multithreading
我有一个由4个线程组成的线程池:t1,t2,t3和t4。它们同时运行,但t3和t4的输入取决于t2的输出。我应该如何实现消息队列,以便在t2完成后,它将输出数据发送到t3和t4进行处理?我试图使用锁定机制实现消息队列,但似乎锁定非常昂贵。是否有在线程之间传递数据的无锁机制? 我在visual studio 2010中使用boost :: thread。
答案 0 :(得分:3)
Boost有一个无锁队列:http://www.boost.org/doc/libs/1_56_0/doc/html/lockfree.html。
答案 1 :(得分:1)
您可以考虑tbb。它提供了广泛的并行概念,包括concurrent_queue,concurrent_bounded_queue(等待),pipeline,flow::graph。前两个也可以在MS VS 2010中的ppl中找到。
concurrent_queue
concurrent_bounded_queue
pipeline
flow::graph