2010-10-14 53 views
1

与专门用于在同一进程中运行的线程工作的技术相比,缺点是缺点。例如,即使等待帖子的任何人都在同一个进程中,等待/帖子是否会导致整个过程产生,而不仅仅是执行线程?在单个多线程C++进程中使用boost :: interprocess :: interprocess_semaphore是否有缺点?

例如,信号量将用于解决同一进程中两个线程之间的共享缓冲区中的生产者/消费者问题。

是否有任何合理的选择?

+0

为什么不使用boost.thread? – tauran 2010-10-14 07:30:57

+0

请参阅http://lists.boost.org/boost-users/2007/11/32207.php讨论问题 – tauran 2010-10-14 07:39:05

+0

是的,我正在使用线程,但显然增强不支持经过优化的信号量只在一个进程中共享。您必须通过使用互斥锁,条件变量和整数计数器来实质上实现信号量。 – jonderry 2010-10-14 18:38:09

回答

3

使用Boost.Thread condition variables如图所示here。随附的文章对Boost.Thread功能进行了很好的总结。

使用进程间信号量可以工作,但由于使用了不必要的重量级底层操作系统锁定原语(例如,在Windows中命名为内核对象),因此可能会对您的执行征税。

相关问题