2010-10-14 51 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中命名爲內核對象),因此可能會對您的執行徵稅。

相關問題