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?