官方地址
-
named_mutex
簡介
// In header: <boost/interprocess/sync/named_mutex.hpp>class named_mutex {
public:// construct/copy/destruct 構建/復制/銷毀named_mutex(create_only_t, const char *, const permissions & = permissions());named_mutex(open_or_create_t, const char *, const permissions & = permissions());named_mutex(open_only_t, const char *);~named_mutex();// public member functionsvoid unlock();void lock();bool try_lock();bool timed_lock(const boost::posix_time::ptime &);// public static functionsstatic bool remove(const char *);
};
說明
- 一個具有全局名稱的mutex,所以可以從不同的進程中找到它。這個mutex不能放在共享內存中,每個進程都應該有自己的named_mutex。
named_mutex 公共構造/復制/銷毀
- named_mutex(create_only_t create_only, const char * name,?const permissions & perm = permissions())。創建一個帶有名稱的全局mutex。錯誤時拋出interprocess_exception。
- named_mutex(open_or_create_t open_or_create, const char * name,??const permissions & perm = permissions())。打開或創建一個帶有名稱的全局mutex。如果mutex沒有創建,這個調用等同于named_mutex(create_only_t, ... ) 如果mutex已經創建,這個調用等同于named_mutex(open_only_t, ... ) 不會拋出以下異常
- named_mutex(open_only_t open_only, const char * name)。如果一個全局的mutex已經被創建,則打開該mutex的名稱。如果之前沒有創建,這個函數會拋出interprocess_exception。
- ~named_mutex() 銷毀*this,并表明調用進程已經完成了對資源的使用。該破壞函數將去分配系統為該資源分配的任何系統資源,供該進程使用。該資源仍然可以調用open構造函數重載再次打開。要從系統中刪除資源,使用remove()。
named_mutex 公共成員函數
- void unlock()。解鎖之前鎖定的mutex。
- void lock()。鎖定mutex,當mutex已經被鎖定時,會進入睡眠狀態。如果發現嚴重錯誤,會拋出interprocess_exception。
- bool try_lock()。嘗試鎖定mutex,當mutex已經鎖定時返回false,成功時返回true。如果發現嚴重錯誤,則拋出interprocess_exception。
- bool timed_lock(const boost::posix_time::ptime & abs_time);試圖鎖定mutex直到abs_time,超時時返回false,鎖定時返回true。如果發現嚴重的錯誤,會拋出interprocess_exception。
named_mutex 公共靜態函數
-
static bool remove(const char * name);從系統中刪除一個命名的mutex。錯誤時返回false。從不拋出。