¿Cómo uso una variable de condición de impulso para esperar a que un subproceso complete el procesamiento?

Estoy usando una variable condicional para detener un hilo hasta que otro haya completado el procesamiento de su cola de tareas (historia larga). Por lo tanto, en un hilo bloqueo y espero:

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

Una vez que el otro hilo ha completado sus tareas, señala el hilo en espera de la siguiente manera:

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

El problema que estoy viendo es que el hilo en espera no deja de esperar a menos que establezca un punto de interrupción en las instrucciones que lo siguen (estoy usando xcode, fyi). Sí, esto parece extraño. ¿Alguien sabe por qué esto podría estar sucediendo? ¿Estoy usando mal la variable de condición?

Respuestas a la pregunta(2)

Su respuesta a la pregunta