2011-03-14 58 views
8

是否有一個非基於文件的命名互斥體在提升?我的問題是,該文件將不會被刪除,以防進程崩潰。該文件甚至可以在重新啓動後存活。是否有一個非基於文件的命名互斥體在提升

問候, 託拜厄斯

+0

你需要在進程間共享互斥? (如果你問的是一個*名爲*互斥體的話,我想你會這樣做,但最好清楚一點)。你使用的是Windows還是Unix(與創建的行爲可能會有所不同)? – 2011-03-14 15:18:12

+1

是的,我需要在進程之間共享。主要用途是在Win32上,但是一個便攜式解決方案會更好,因此提升解決方案的問題。 – 2011-03-15 12:55:38

回答

1

Boost.Interprocess中提供下列的互斥鎖類型:

#include <boost/interprocess/sync/interprocess_mutex.hpp> 

interprocess_mutex:一種非遞歸的,匿名互斥可以放置在共享存儲器或內存映射文件。

#include <boost/interprocess/sync/interprocess_recursive_mutex.hpp> 

interprocess_recursive_mutex:一個遞歸的,匿名互斥可以放置在共享內存或存儲器映射的文件。

#include <boost/interprocess/sync/named_mutex.hpp> 

named_mutex:非遞歸,命名互斥。

#include <boost/interprocess/sync/named_recursive_mutex.hpp> 

named_recursive_mutex:遞歸,命名互斥。

我建議使用命名互斥鎖。見docs

+1

named_mutex(至少在默認設置下)創建一個文件。這不是我想要的,因此我的問題。 – 2011-03-14 10:54:54

+0

是的,我的不好。我檢查1.46分支中的實現(查看) - 它在共享內存中創建文件。 – maverik 2011-03-14 11:02:13

+0

可能是'boost :: thread :: mutex'完成這項工作。我還沒有使用它,雖然 – maverik 2011-03-14 11:19:24

3

對於windows就可以使用boost::interprocess::ipcdetail::winapi_mutex_wrapper因爲它不是基於文件的

+0

我創建了一張票,這似乎是非官方的正弦。請參閱https://svn.boost.org/trac/boost/ticket/12370 – gast128 2016-08-02 15:57:07

相關問題