状況:mutexの所有権は、ロック解除の前にロックを要求したスレッドにのみ厳密に渡されますか?
- スレッド1は現在、ミューテックスを所有しています。
- スレッド1はmutexの所有権を保持しますが、スレッド2は同じロックを要求します。
- スレッド1はロックを解除します。
この時点で、別のスレッド(スレッド3など)がロックを要求して取得することができます(下記参照)。あるいは、POSIXは、mutexのロックを解除する瞬間に、すでにそのmutexを待っているスレッドがmutexを取得することを保証していますか?
pthread_mutex_unlock()
状態のマニュアルページ -
pthread_mutex_unlockの()が使用可能 なってミューテックス、その結果、呼び出されたときに、ミューテックス によって参照ミューテックスオブジェクトでブロックされたスレッドが存在する場合スケジューリング方針は、どのスレッドがmutexを獲得するかを決定するものとする。
これは、私が完全に保証されていないにもかかわらず、スレッド3が襲撃されてミューテックスを得ることができないと言います。
私はロック取得がFCFSベースであるかどうか尋ねていませんでした。 UNLOCK(m、t1) - > LOCK(m、t4)のシナリオでは、LOCK(m、t1) '。 'UNLOCK(m、t1) 'では、間違いなくt2とt3との間の競合が存在する(すなわち、FCFSではない)可能性がある。私の質問は、t4がロックに競合しすぎていることです(t4は** 'm'がロック解除された後にロック要求**をしました)。 –
UNLOCK(m、t1)の後にACQUIREが存在しない場合は、LOCK(m、t4)を仮定すると論理的になります。 )はmutexのために競争します。これが言って、私は興味があります、あなたが解決しようとしている問題は何ですか? –
POSIXのmutexとスレッドがどのように動作することが予想されるかを理解しようとすると、問題を解決しようとするだけではありません。 –