Jak użyć zmiennej warunku doładowania, aby poczekać, aż wątek zakończy przetwarzanie?

Używam zmiennej warunkowej do zatrzymania wątku, dopóki inny wątek nie zakończy przetwarzania jego kolejki zadań (długa historia). W jednym wątku blokuję i czekam:

boost::mutex::scoped_lock lock(m_mutex);
m_condition.wait(lock);

Gdy drugi wątek zakończy swoje zadania, sygnalizuje oczekującemu wątkowi:

boost::mutex::scoped_lock lock(m_parent.m_mutex);
m_parent.m_condition.notify_one();

Problem, który widzę, polega na tym, że oczekujący wątek nie przestaje czekać, chyba że ustawię punkt przerwania w instrukcji po nim (używam xcode, fyi). Tak, to wydaje się dziwne. Czy ktoś wie, dlaczego tak się dzieje? Czy źle używam zmiennej warunkowej?

questionAnswers(2)

yourAnswerToTheQuestion