ReadWrite锁定动态的作用域资源

时间:2013-09-08 19:02:22

标签: java concurrency

我正在尝试设计一些非常类似于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应阻止iff另一个操作已获取对任何范围otherScope的锁定,以便

scope.overlaps(otherScope) == true

...通常的行为是并发读取没问题,但写锁是独占的。

我可以设想如何通过我手动维护的一组操作上的单个独占锁来执行此操作:如果正在进行任何重叠操作,请求者等待单个条件,并且operation.end()通知所有服务员。

但是我想知道是否有更聪明的设计,特别是利用Java 7 ReadWriteLock实现的“公平”属性的东西?

[编辑]我应该提到可能的范围列表非常大且动态。为了帮助描绘事物,范围是资源树层次结构中的任意节点集合,其中创建资源并且创建资源。一直删除。只要两个范围相同或共享一个共同的祖先,两个范围就会重叠。

0 个答案:

没有答案