0
  1. スレッドT1はミューテックスMをロックし、条件Cで待機します( Mを解放します)。

  2. スレッドT2はミューテックスMをロックし、条件Cを通知します。

文献では、 Cが通知されると、T1が起動してMを再取得すると述べられています。

Cを通知する前にMを取得したため、 T2で何が起こるかについては疑問が残りました。

シグナリング前に取得したMに関するT2はどうなりますか?

  1. T1は準備が整いましたがブロックされ、T2がMを解放した後にのみ実行され、再取得されますか?

  2. Mが解放されるまでT2がブロックされている間、 T1は準備が整い実行されますか?

  3. それらは同時に実行され、 Mが取得されたT1Mが解放されたT2 (または取得された?)

  4. ?

4

1 に答える 1

0

条件 C を通知すると、スレッド T1 がウェイクアップし、ロックしてミューテックス M を再取得する必要があります。そのためには、T2 が最初に M を解放する必要があります。

したがって、答えは、T1 は信号でウェイクアップし、M の取得を待機し、T2 は M を解放し、T1 は M を取得し、T1 と T2 は同時に実行されます。

于 2012-12-16T18:25:37.493 に答える