C プログラミング:
スレッドがミューテックス ロックを取得しようとして、取得に失敗するとどうなりますか?
それは眠りますか?
pthread_mutex_unlock(&mutex); の場合、スレッドは起動されますか? と呼ばれる?
その後、もう一度ロックを取得してみますか?
マニュアルページから:
関数はミューテックス
pthread_mutex_lock()をロックします。ミューテックスが既にロックされている場合、呼び出し元のスレッドはミューテックスが使用可能になるまでブロックされます。
そうです-ロックが利用可能になり、ロックを取得できるまで、スレッドはブロックされます。
POSIX標準から:
ミューテックスが既にロックされている場合、呼び出し元のスレッドは、ミューテックスが使用可能になるまでブロックされます。
(...)
mutexwhenが呼び出されたときに参照されるミューテックス オブジェクトでブロックされているスレッドがありpthread_mutex_unlock()、ミューテックスが使用可能になる場合、スケジューリング ポリシーは、どのスレッドがミューテックスを取得するかを決定します。
"resulting in" 句が必要な場合
(
PTHREAD_MUTEX_RECURSIVEミューテックスの場合、カウントがゼロに達し、呼び出し元のスレッドがこのミューテックスをロックしなくなったときにミューテックスが使用可能になります。)