Я использую условную переменную, чтобы остановить поток, пока другой поток не завершил обработку очереди задач (длинная история). Итак, в одном потоке я блокирую и жду:
boost::mutex::scoped_lock lock(m_mutex);
m_condition.wait(lock);
Как только другой поток выполнит задания, он сигнализирует ожидающий поток следующим образом:
boost::mutex::scoped_lock lock(m_parent.m_mutex);
m_parent.m_condition.notify_one();
Проблема, которую я вижу, заключается в том, что ожидающий поток не останавливается, если я не установил точку останова в последующих инструкциях (я использую xcode, fyi). Да, это кажется странным. Кто-нибудь знает, почему это может произойти? Я неправильно использую переменную условия?