Я заметил, что когда я выполняю операцию ожидания над условной переменной, она немедленно возвращается.Следствием этого является то, что при выполнении следующего фиктивного кода в цикле используется 100% одного ЦП:
int main(void) {
boost::condition_variable cond;
boost::mutex mut;
bool data_ready = false;
boost::unique_lock<boost::mutex> lock(mut);
while (!data_ready) {
cond.wait(lock);
}
return 1;
}
Я ожидаю, что вызов cond.wait(lock)
поместите поток в состояние, когда он не потребляет процессор, но это не так.
Так в чем же проблема?Я взял приведенный выше код из документации надстройки.
(я использую надстройку 1.44)
Спасибо,
Гийом