Хм, да, это не совсем удовлетворительный ответ, учитывая, что он действительно применим только к одной платформе, хотя я думаю, что действительно невероятно сложно заставить его работать "правильно" в Linux, тогда это может быть веской причиной для документирования поддельного пробуждения
кнулся на этот интересный абзац вУскорение документации сегодня:
void wait(boost::unique_lock<boost::mutex>& lock)
...
Эффекты: атомно вызывает lock.unlock () и блокирует текущий поток. Поток разблокируется, когда получено уведомление с помощью вызова this-> notify_one () или this-> notify_all (), илиложно, Когда поток разблокирован (по какой-либо причине), блокировка восстанавливается путем вызова lock.lock () до возврата вызова к ожиданию. Блокировка также восстанавливается путем вызова lock.lock (), если функция завершается с исключением.
Итак, что меня интересует, так это значение слова "spuriously". Почему поток был заблокирован по ложным причинам? Что можно сделать, чтобы решить эту проблему?