7

C プログラミング:

スレッドがミューテックス ロックを取得しようとして、取得に失敗するとどうなりますか?

それは眠りますか?

pthread_mutex_unlock(&mutex); の場合、スレッドは起動されますか? と呼ばれる?

その後、もう一度ロックを取得してみますか?

4

4 に答える 4

9

マニュアルページから:

関数はミューテックスpthread_mutex_lock()をロックします。ミューテックスが既にロックされている場合、呼び出し元のスレッドはミューテックスが使用可能になるまでブロックされます。

そうです-ロックが利用可能になり、ロックを取得できるまで、スレッドはブロックされます。

于 2011-03-11T01:00:24.110 に答える
0

POSIX標準から:

ミューテックスが既にロックされている場合、呼び出し元のスレッドは、ミューテックスが使用可能になるまでブロックされます。

(...)

mutexwhenが呼び出されたときに参照されるミューテックス オブジェクトでブロックされているスレッドがありpthread_mutex_unlock()、ミューテックスが使用可能になる場合、スケジューリング ポリシーは、どのスレッドがミューテックスを取得するかを決定します。

"resulting in" 句が必要な場合

(PTHREAD_MUTEX_RECURSIVEミューテックスの場合、カウントがゼロに達し、呼び出し元のスレッドがこのミューテックスをロックしなくなったときにミューテックスが使用可能になります。)

于 2011-03-11T01:10:35.210 に答える