新しいタイプの compare&swap(a,b) (CAS) オブジェクト (新しいタイプを CAS2 と呼びましょう) を実装 (疑似コード) する必要があります。
CAS および CAS2 オブジェクトはどちらも、オブジェクト値を返す読み取り操作をサポートしています。
どちらもcompare&swap(a,b)操作をサポートしていますが、CASではこの操作はtrue/falseを返し、aと等しい場合はオブジェクト値をbに変更しますが、CAS2ではこの操作は同じ効果がありますが、trueを返す代わりに/false、操作の前に常にオブジェクト値を返す必要があります。
例えば:
CAS オブジェクトの値が 4 の場合、compare&swap (4,5) は true を返し、値を 5 に変更しますが、CAS2 オブジェクトでは、compare&swap (4,5) は 4 を返し、値を 5 に変更します。CAS オブジェクトの値が 4 の場合、compare&swap (5,6) は false を返し、何もしませんが、CAS2 では、compare&swap (5,6) は 4 を返し、何もしません。CAS2 オブジェクトは、1 つの CAS オブジェクトのみを使用して実装する必要があり、実装はウェイトフリーで線形化可能でなければなりません。
前もって感謝します!