我需要一个快速的线程间通信机制,用于将工作(void*
)从TBB任务传递给正在运行/阻塞操作的多个工作者。
目前,我正在考虑使用pipe()
+ libevent
。是否有更快,更优雅的替代方案可用于英特尔线程构建模块?
答案 0 :(得分:7)
您应该能够使用带有互斥锁的标准内存,因为线程共享相同的内存空间。 pipe()+ libevent解决方案似乎更适合进程间通信,其中每个进程都有不同的内存空间。
答案 1 :(得分:2)
结帐Implementing a Thread-Safe Queue using Condition Variables。它使用STL队列,互斥锁和条件变量来促进线程间通信。 (我不知道这是否适用于英特尔线程构建模块,但由于问题/标题中没有提到TBB,我假设其他人会像我一样在这里结束 - 寻找一个线程间通信机制,不是IPC。这篇文章可能对他们有所帮助,就像它帮助了我一样。)
答案 2 :(得分:1)
看一下Boost lock free和线程安全队列。非常容易使用,效果很好。我已经将它用于在不同核心上运行的线程轮询队列以进行工作。