1

我正在为分布式键值存储实现悲观锁定。我有一个坚如磐石的原子比较交换(以及递增和递减)操作来实现锁。还有已经提供原子操作的集合、排序集合、列表和数组的数据结构(我可以使用服务器端脚本以任何方式原子地操作这些结构)。

使用上述作为构建块,我需要制作一个支持像.Net's WaitHandle.WaitAll这样的操作的可重入互斥锁,即。能够在一次调用中锁定多个资源,同时最大限度地减少活锁和饥饿的可能性。我怎么做?有普遍接受的算法吗?

作为一个附带问题,我已经研究了诸如彼得森算法及其亲属之类的东西,但似乎这些互斥算法正在解决与我所面临的问题不同的问题(我已经有了原子操作)。我正在努力做一些我认为被认为是更高级的同步原语的东西(基于http://en.wikipedia.org/wiki/Mutual_exclusion#Advanced_mutual_exclusion的标题),我想知道是否有单独的一类算法这回答了这些不那么深入的核心问题。

4

0 回答 0