5

これは、「The Art of Multiprocessor Programming」の 2 つのスレッドのミューテキスト実装です。

private int victim;
// thread-local index, 0 or 1

public void lock() {
  int i = ThreadID.get();
  victim = i;                 // let the other go first
  while (victim == i) {}      // spin
}
public void unlock() {}

彼らは、「あるスレッドが他のスレッドよりも先に実行される」と、このコードがデッドロックになると述べています。デッドロックが発生しない場合のインターリーブ実行の例を誰でも説明できますか?

4

4 に答える 4