2012-12-04 63 views
0

我正在開發一個項目,使用boost::interprocess_mutex es到處都是,即使應用程序從未甚至是兒童,但嚴重依賴於多線程。boost :: interprocess_mutex vs進程本地boost :: mutex

它是正確的假設,所有這些interprocess_mutex ES可以通過工藝本地互斥體代替,而不會破壞任何東西?

是我的假設,這可能(通過最小的因素,如果只)正確提高性能?

是否有任何可以想到的原因使用單個(任選多線程)過程中間同步?

+0

它使用共享內存嗎?並且是多個應用程序使用的內存?這就是測試 - 它不必分叉,可能有不同的代碼庫(單獨的可執行文件)共享某些資源。 (但是,如果沒有,那麼我會猜測你可以使用普通的互斥體) – Caribou

回答

3

它使用共享內存還是其他一些IPC機制?並且是多個應用程序使用的內存?這就是測試...

它沒有到餐桌,可能會有一些共享資源不同的代碼庫(獨立的可執行文件)。例如,是否有一個監視應用程序或接口,可以通過某些IPC機制從應用程序獲取統計信息?請注意,可能有其他更好的方法來做這件事,這只是一個例子。

望着標題:

http://www.boost.org/doc/libs/1_52_0/boost/interprocess/sync/windows/mutex.hpp

http://www.boost.org/doc/libs/1_52_0/boost/interprocess/sync/posix/mutex.hpp

有一個開銷,並與當地的版本替換它(如果安全)可能獲得你一些效率。然而,我並不太熟悉Posix的實現。

正如我上面說,如果外部應用程序中使用一些說共享內存來獲得統計或溝通是你可以使用IPC - 但如果不是這種情況你,那麼你或許可以取代它們。

相關問題