0

Java の並行 ReadWrite ロックのように機能するものを設計しようとしていますが、互いに重複する可能性のあるリソース間のアクセスを制御しようとしています。アイデアは、

Operation mgr.startReadOperation(Scope scope) // acquires a read lock
Operation mgr.startEndOperation(Scope scope)  // acquires a writelock
operation.end()                               // release the lock

startOperation は、別の操作がスコープ otherScope でロックを取得した場合にブロックする必要があります。

scope.overlaps(otherScope) == true

...同時読み取りは問題ありませんが、書き込みロックは排他的であるという通常の動作です。

手動で維持する一連の操作に対して単一の排他的ロックを使用してこれを行う方法を想像できます。進行中の重複する操作がある場合、リクエスターは単一の条件で待機し、operation.end() はすべての待機者に通知します。

ただし、よりスマートな設計、特にJava 7 ReadWriteLock実装の「公平性」プロパティを活用するものがあるのだろうか?

[編集] 可能なスコープのリストは非常に大きく、動的であることを述べておくべきでした。スコープとは、リソースが常に作成および削除されるリソース ツリー階層内のノードの任意のコレクションです。2 つのスコープは、それらのノードの 2 つが同一であるか、共通の祖先を共有するとすぐに重複します。

4

0 に答える 0