В документации говорится, что разблокировка ожидающего потока происходит при вызовах condition_variable::notify, condition_variable::notify_all, or spuriously. Какие методы входят в это spuriously? И какое время будет отдано на ожидание? А то пример, приведённый там,
boost::condition_variable cond;
boost::mutex mut;
bool data_ready;
void process_data();
void wait_for_data_to_process()
{
boost::unique_lock<boost::mutex> lock(mut);
while(!data_ready)
{
cond.wait(lock);
}
process_data();
}
выглядит так, будто wait выполняется ограниченное количество времени, и периодически выполняется проверка data_ready.