C++11標準ライブラリやBoost.Threadライブラリで提供されるcondition_variable_anyとrecursive_mutexの組み合わせについてメモ。 まとめ:condition_variable_anyとrecursive_mutexの組み合わせ利用は避けること。*1 *2 条件変数condition_variable_anyのwaitメンバ関数仕様では、指定されたロックオブジェクトに対して1度だけunlock操作を行う。同関数に対して2回以上lock操作されている(ロックカウント > 1)再帰ロックオブジェクトを指定した場合、該当ロックは解放されない(ロックカウント != 0)まま関数を呼び出したスレッドAはブロック状態に遷移する。この状況では別スレッドBでのロック獲得要求もブロックされるため、プログラム全体としてはデッドロックに陥る。 condition_va