7

我需要一个快速的线程间通信机制来将工作(void*)从TBB任务传递给几个正在运行/阻塞操作的工作人员。目前我正在研究使用pipe()+ libevent。与英特尔线程构建模块一起使用是否有更快、更优雅的替代方案?

4

3 回答 3

7

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

于 2010-03-08T14:51:23.520 回答
2

查看使用条件变量实现线程安全队列。它使用 STL 队列、互斥体和条件变量来促进线程间通信。(我不知道这是否适用于英特尔线程构建块,但由于问题/标题中没有提到 TBB,我假设其他人会像我一样在这里结束 - 寻找一种线程间通信机制不是 IPC。这篇文章可能会帮助他们,就像它帮助了我一样。)

于 2010-08-23T16:33:22.760 回答
1

看看 Boost 无锁和线程安全队列。非常易于使用并且效果非常好。我已经将它与运行在不同内核上的线程一起使用,轮询队列以进行工作。

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

于 2013-11-23T12:01:07.120 回答