Class named_condition
-
boost::interprocess::named_condition
简介
// In header: <boost/interprocess/sync/named_condition.hpp>class named_condition {
public:// construct/copy/destructnamed_condition(create_only_t, const char *, const permissions & = permissions());named_condition(open_or_create_t, const char *, const permissions & = permissions());named_condition(open_only_t, const char *);~named_condition();// public member functions*void notify_one();void notify_all();template<typename L> void wait(L &);template<typename L, typename Pr> void wait(L &, Pr);template<typename L> bool timed_wait(L &, const boost::posix_time::ptime &);template<typename L, typename Pr> bool timed_wait(L &, const boost::posix_time::ptime &, Pr);// public static functionsstatic bool remove(const char *);
};
Description
- A global condition variable that can be created by name. This condition variable is designed to work with named_mutex and can't be placed in shared memory or memory mapped files.
- 一个全局条件变量,可以通过名字来创建。这个条件变量被设计成与named_mutex一起工作,不能放在共享内存或内存映射文件中。
named_condition
public construct/copy/destruct
- named_condition(create_only_t create_only, const char * name, const permissions & perm = permissions());
- Creates a global condition with a name. If the condition can't be created throws
interprocess_exception
创建一个带有名称的全局条件。如果条件不能被创建,则抛出interprocess_exception。
named_condition(open_or_create_t open_or_create, const char * name,
const permissions & perm = permissions());- Opens or creates a global condition with a name. If the condition is created, this call is equivalent to named_condition(create_only_t, ... ) If the condition is already created, this call is equivalent named_condition(open_only_t, ... ) Does not throw
- 打开或创建一个带有名称的全局条件。如果条件已经创建,这个调用相当于 named_condition(create_only_t, ... ) 如果条件已经创建,这个调用相当于 named_condition(open_only_t, ... ) 不抛出
- named_condition(open_only_t open_only, const char * name);
- Opens a global condition with a name if that condition is previously created. If it is not previously created this function throws
interprocess_exception
. - 如果之前创建了一个带有名称的全局条件,则打开该条件。如果之前没有创建,则该函数会引发interprocess_exception。
- ~named_condition();
- Destroys *this and indicates that the calling process is finished using the resource. The destructor function will deallocate any system resources allocated by the system for use by this process for this resource. The resource can still be opened again calling the open constructor overload. To erase the resource from the system use remove().
- 销毁*this,并表示调用进程使用该资源结束。该破坏函数将去分配系统为该资源分配的任何系统资源,供该进程使用。该资源仍然可以调用open构造函数重载再次打开。要从系统中删除资源,使用remove()。
named_condition
public member functions
- *void notify_one();
- If there is a thread waiting on *this, change that thread's state to ready. Otherwise there is no effect.
- 如果有一个线程在等待*this,则将该线程的状态改为ready。否则没有任何影响。
- void notify_all();
- Change the state of all threads waiting on *this to ready. If there are no waiting threads, notify_all() has no effect.
- 将所有在*this上等待的线程的状态改为ready。如果没有等待的线程,notify_all()就没有效果。
- template<typename L> void wait(L & lock);
- Releases the lock on the
named_mutex
object associated with lock, blocks the current thread of execution until readied by a call to this->notify_one() or this->notify_all(), and then reacquires the lock. - 释放与锁相关联的named_mutex对象的锁,阻止当前线程的执行,直到调用this->notify_one()或this->notify_all()准备好,然后重新获取锁。
- template<typename L, typename Pr> void wait(L & lock, Pr pred);
- The same as: while (!pred()) wait(lock)
- template<typename L> bool timed_wait(L & lock, const boost::posix_time::ptime & abs_time);
- Releases the lock on the
named_mutex
object associated with lock, blocks the current thread of execution until readied by a call to this->notify_one() or this->notify_all(), or until time abs_time is reached, and then reacquires the lock. Returns: false if time abs_time is reached, otherwise true. - 释放与锁相关联的named_mutex对象的锁,阻止当前线程的执行,直到调用this->notify_one()或this->notify_all(),或者直到达到时间abs_time,然后重新获取锁。返回:如果达到时间abs_time,则返回false,否则返回true。
- template<typename L, typename Pr>bool timed_wait(L & lock, const boost::posix_time::ptime & abs_time, Pr pred);
- The same as: while (!pred()) { if (!timed_wait(lock, abs_time)) return pred(); } return true;
named_condition
public static functions
- static bool remove(const char * name);
- Erases a named condition from the system. Returns false on error. Never throws.
- 从系统中删除一个命名的条件。错误时返回false。绝不抛出。