マルチスレッド(2スレッド)プログラムでは、次のコードがあります。
while(-1)
{
m.lock();
(...)
m.unlock();
}
m
はミューテックスです(私の場合はc ++ 11std::mutex
ですが、別のライブラリを使用しても変更されないと思います)。
最初のスレッドがミューテックスを所有し、それが部分的に何かを行ったと仮定します(...)
。2番目のスレッドはミューテックスを取得しようとしましたが、最初のスレッドがリリースされるのを待っていますm
。
問題は、スレッド1が(...)
実行を終了してミューテックスのロックを解除したときに、スレッド2がミューテックスを取得するか、スレッド1がスレッド2の前にミューテックスを再取得できるかどうかを確認できるかlock()
どうかです。