別のスレッドがタスクキューの処理を完了するまで、条件変数を使用してスレッドを停止しています (長い話)。したがって、1 つのスレッドでロックして待機します。
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 を使用しています)。はい、これは奇妙に思えます。なぜこれが起こっているのか誰にも分かりますか?条件変数を誤用していませんか?