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