「マルチプロセッサプログラミングの技術」(Elsevier、2012 ISBN 978)、206ページ(セクション9.6楽観的同期):https://books.google.com/...のページ205から1ページ下にスクロールすると、追加/削除/包含図9.12 OptimisticList
クラス:add()
メソッドは、新しいノードを追加する前に、ロックを無視してロックを取得し、検証します。OptimisticList
クラス:remove()
メソッドは、ロックを無視してロックを取得し、前に検証します。ノードを削除する。page copy)。 (楽観的同期を参照しながら)追加、削除、および含まれている楽観的な同期待ちはありますか?
、それは
The next step is to refine this algorithm so that contains() calls are wait-free, and add() and remove() methods, while still blocking, traverse the list only once
状態に移行これにより方法が自由に待っていないが含まれ、と言っているように見えますどちらのメソッドも追加または削除されません。しかし、なぜそうなるのか分かりません。
すべての3つのメソッドを実装すると、待機する可能性がある.lock()が呼び出されます。そういうわけで、彼らは待ち時間がないのです。 – Tsyvarev