В отличие от std::condition_variable_any в C++11, не безопасно вызывать деструктор, если все потоки были только уведомлены. Необходимо, чтобы они вышли из своих соответствующих функций ожидания.
interprocess_condition_any
public
construct/copy/destruct
interprocess_condition_any public member functions
<
voidnotify_one();
>
Если есть нить, ожидающая этого, измените состояние этой нити на готовое. В противном случае эффекта нет.
<
voidnotify_all();
>
Измените состояние всех нитей, ожидающих *это готово. Если нет потоков ожидания, уведомить_all() не имеет никакого эффекта.
<
template<typenameL>voidwait(L&lock);
>
Отпускает замок на объекте<interprocess_mutex>, связанном с блокировкой, блокирует текущую нить исполнения до тех пор, пока не будет подготовлен вызов к этому->notify_one() или этому->notify_all(), а затем вновь приобретает замок.
Отпускает замок на объекте<interprocess_mutex>, связанном с блокировкой, блокирует текущую нить исполнения до тех пор, пока не будет подготовлен вызов к этому->notify_one() или этому->notify_all(), или пока не будет достигнуто время abs_time, а затем вновь приобретает замок. Возврат: ложный, если время abs_time достигнуто, в противном случае истинно.
То же, что: в то время как (!pred()) {, если (!timed_wait(lock, abs_time)) возвратить pred(); } возвратить истинно;
Статья Class interprocess_condition_any раздела The Boost C++ Libraries BoostBook Documentation Subset Indexes and Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.