boost中的interprocess_condition类是一个放在共享内存或内存映像文件中的条件变量。
interprocess_condition主要的public成员函数有:
1. void notify_one()
如果有一个线程正在等待本线程(*this),改变那个线程到已准备好的状态。否则没有任何作用。
2. void notify_all()
改变等待本线程(*this)的所有线程的状态到准备好了。如果当前没有等待的线程,则该函数没有任何作用。
3. template<typename L> void wait(L & lock)
释放与interprocess_mutex对象相关联的锁的锁,阻塞当前线程的执行,直到通过调用this->notify_one()或者this->notify_all()准备好,然后获得锁。
4. template<typename L, typename Pr> void wait(L & lock, Pr pred)
与while(!pred())wait(lock)同意。
5. template<typename L> bool timed_wait(L & lock, const boost::posix_time::ptime & abs_time):
释放与interprocess_mutex对象相关联的锁的锁,阻塞当前线程的执行,直到通过调用this->notify_one()或者this->notify_all()准备好,然后获得锁。如果时间abs_time达到,返回false,否则返回true。
6. template<typename L> bool timed_wait(L & lock, const boost::posix_time::ptime & abs_time, Pr pred)
与while(!pred()){if(!timed_wait(lock, abs_time)) return pred(); }相同,返回true。
本文翻译自boost官网