boost::interprocess::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 functions
  void unlock();
  void lock();
  bool try_lock();
  bool timed_lock(const boost::posix_time::ptime &);

  // public static functions
  static 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。从不抛出。

猜你喜欢

转载自blog.csdn.net/CHYabc123456hh/article/details/111315470