condition_variables.qbk
来自「Boost provides free peer-reviewed portab」· QBK 代码 · 共 514 行 · 第 1/2 页
QBK
514 行
function exits with an exception.]][[Returns:] [`false` if the call is returning because the time period specifiedby `rel_time` has elapsed, `true` otherwise.]][[Postcondition:] [`lock` is locked by the current thread.]][[Throws:] [__thread_resource_error__ if an erroroccurs. __thread_interrupted__ if the wait was interrupted by a call to__interrupt__ on the __thread__ object associated with the current thread of execution.]]][note The duration overload of timed_wait is difficult to use correctly. The overload taking a predicate should be preferred in most cases.][endsect][section:timed_wait_predicate `template<typename predicate_type> bool timed_wait(boost::unique_lock<boost::mutex>& lock, boost::system_time const& abs_time, predicate_type pred)`][variablelist[[Effects:] [As-if ``while(!pred()){ if(!timed_wait(lock,abs_time)) { return pred(); }}return true;``]]][endsect][endsect][section:condition_variable_any Class `condition_variable_any`] #include <boost/thread/condition_variable.hpp> namespace boost { class condition_variable_any { public: condition_variable_any(); ~condition_variable_any(); void notify_one(); void notify_all(); template<typename lock_type> void wait(lock_type& lock); template<typename lock_type,typename predicate_type> void wait(lock_type& lock,predicate_type predicate); template<typename lock_type> bool timed_wait(lock_type& lock,boost::system_time const& abs_time); template<typename lock_type,typename duration_type> bool timed_wait(lock_type& lock,duration_type const& rel_time); template<typename lock_type,typename predicate_type> bool timed_wait(lock_type& lock,boost::system_time const& abs_time,predicate_type predicate); template<typename lock_type,typename duration_type,typename predicate_type> bool timed_wait(lock_type& lock,duration_type const& rel_time,predicate_type predicate); // backwards compatibility template<typename lock_type> bool timed_wait(lock_type>& lock,boost::xtime const& abs_time); template<typename lock_type,typename predicate_type> bool timed_wait(lock_type& lock,boost::xtime const& abs_time,predicate_type predicate); }; }[section:constructor `condition_variable_any()`][variablelist[[Effects:] [Constructs an object of class `condition_variable_any`.]][[Throws:] [__thread_resource_error__ if an error occurs.]]][endsect][section:destructor `~condition_variable_any()`][variablelist[[Precondition:] [All threads waiting on `*this` have been notified by a call to`notify_one` or `notify_all` (though the respective calls to `wait` or`timed_wait` need not have returned).]][[Effects:] [Destroys the object.]][[Throws:] [Nothing.]]][endsect][section:notify_one `void notify_one()`][variablelist[[Effects:] [If any threads are currently __blocked__ waiting on `*this` in a callto `wait` or `timed_wait`, unblocks one of those threads.]][[Throws:] [Nothing.]]][endsect][section:notify_all `void notify_all()`][variablelist[[Effects:] [If any threads are currently __blocked__ waiting on `*this` in a callto `wait` or `timed_wait`, unblocks all of those threads.]][[Throws:] [Nothing.]]][endsect][section:wait `template<typename lock_type> void wait(lock_type& lock)`][variablelist[[Effects:] [Atomically call `lock.unlock()` and blocks the current thread. Thethread will unblock when notified by a call to `this->notify_one()` or`this->notify_all()`, or spuriously. When the thread is unblocked (for whateverreason), the lock is reacquired by invoking `lock.lock()` before the call to`wait` returns. The lock is also reacquired by invoking `lock.lock()` if thefunction exits with an exception.]][[Postcondition:] [`lock` is locked by the current thread.]][[Throws:] [__thread_resource_error__ if an erroroccurs. __thread_interrupted__ if the wait was interrupted by a call to__interrupt__ on the __thread__ object associated with the current thread of execution.]]][endsect][section:wait_predicate `template<typename lock_type,typename predicate_type> void wait(lock_type& lock, predicate_type pred)`][variablelist[[Effects:] [As-if ``while(!pred()){ wait(lock);}``]]][endsect][section:timed_wait `template<typename lock_type> bool timed_wait(lock_type& lock,boost::system_time const& abs_time)`][variablelist[[Effects:] [Atomically call `lock.unlock()` and blocks the current thread. Thethread will unblock when notified by a call to `this->notify_one()` or`this->notify_all()`, when the time as reported by `boost::get_system_time()`would be equal to or later than the specified `abs_time`, or spuriously. Whenthe thread is unblocked (for whatever reason), the lock is reacquired byinvoking `lock.lock()` before the call to `wait` returns. The lock is alsoreacquired by invoking `lock.lock()` if the function exits with an exception.]][[Returns:] [`false` if the call is returning because the time specified by`abs_time` was reached, `true` otherwise.]][[Postcondition:] [`lock` is locked by the current thread.]][[Throws:] [__thread_resource_error__ if an erroroccurs. __thread_interrupted__ if the wait was interrupted by a call to__interrupt__ on the __thread__ object associated with the current thread of execution.]]][endsect][section:timed_wait_rel `template<typename lock_type,typename duration_type> bool timed_wait(lock_type& lock,duration_type const& rel_time)`][variablelist[[Effects:] [Atomically call `lock.unlock()` and blocks the current thread. Thethread will unblock when notified by a call to `this->notify_one()` or`this->notify_all()`, after the period of time indicated by the `rel_time`argument has elapsed, or spuriously. When the thread is unblocked (for whateverreason), the lock is reacquired by invoking `lock.lock()` before the call to`wait` returns. The lock is also reacquired by invoking `lock.lock()` if thefunction exits with an exception.]][[Returns:] [`false` if the call is returning because the time period specifiedby `rel_time` has elapsed, `true` otherwise.]][[Postcondition:] [`lock` is locked by the current thread.]][[Throws:] [__thread_resource_error__ if an erroroccurs. __thread_interrupted__ if the wait was interrupted by a call to__interrupt__ on the __thread__ object associated with the current thread of execution.]]][note The duration overload of timed_wait is difficult to use correctly. The overload taking a predicate should be preferred in most cases.][endsect][section:timed_wait_predicate `template<typename lock_type,typename predicate_type> bool timed_wait(lock_type& lock, boost::system_time const& abs_time, predicate_type pred)`][variablelist[[Effects:] [As-if ``while(!pred()){ if(!timed_wait(lock,abs_time)) { return pred(); }}return true;``]]][endsect][endsect][section:condition Typedef `condition`] #include <boost/thread/condition.hpp> typedef condition_variable_any condition;The typedef `condition` is provided for backwards compatibility with previous boost releases.[endsect][endsect]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?