快速的线程间通信机制

时间:2010-03-08 06:58:33

标签: c++ multithreading tbb

我需要一个快速的线程间通信机制,用于将工作(void*)从TBB任务传递给正在运行/阻塞操作的多个工作者。 目前,我正在考虑使用pipe() + libevent。是否有更快,更优雅的替代方案可用于英特尔线程构建模块?

3 个答案:

答案 0 :(得分:7)

您应该能够使用带有互斥锁的标准内存,因为线程共享相同的内存空间。 pipe()+ libevent解决方案似乎更适合进程间通信,其中每个进程都有不同的内存空间。

答案 1 :(得分:2)

结帐Implementing a Thread-Safe Queue using Condition Variables。它使用STL队列,互斥锁和条件变量来促进线程间通信。 (我不知道这是否适用于英特尔线程构建模块,但由于问题/标题中没有提到TBB,我假设其他人会像我一样在这里结束 - 寻找一个线程间通信机制,不是IPC。这篇文章可能对他们有所帮助,就像它帮助了我一样。)

答案 2 :(得分:1)

看一下Boost lock free和线程安全队列。非常容易使用,效果很好。我已经将它用于在不同核心上运行的线程轮询队列以进行工作。

http://www.boost.org/doc/libs/1_55_0/doc/html/lockfree.html