官方地址
-
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。从不抛出。