Hello *, I think there is an error in the docs at: http://www.boost.org/doc/libs/1_38_0/doc/html/thread/synchronization.html#th... Member Function of condition_variable class is documented as: template<typename predicate_type> void wait(boost::unique_lockboost::mutex& lock, predicate_type pred) Effects: As-if while(!pred()) { wait(lock); } Should be: template<typename predicate_type> void wait(boost::unique_lockboost::mutex& lock, predicate_type pred) Effects: As-if while(pred()) //!!!!! no not operator { wait(lock); } If I pass the negated predicate to the wait, my thread blocks forever, whereas passing the predicate works as intended. This applies to the version 1.36, but 1.38 states the same in the docs. Thanks, Ovanes