分散キー値ストアに悲観的ロックを実装しています。ロックを実装するための堅実なアトミック比較交換 (およびインクリメントとデクリメント) 操作があります。セット、ソート済みセット、リスト、および配列のデータ構造もあり、これらはすでにアトミック操作を提供しています (サーバー側スクリプトを使用して、これらの構造を任意の方法でアトミックに操作できます)。
上記を構成要素として使用して、.Net のWaitHandle.WaitAllのような操作をサポートする再入可能ミューテックスを作成する必要があります。ライブロックや飢餓の可能性を最小限に抑えながら、1 回の呼び出しで複数のリソースをロックできます。それ、どうやったら出来るの?一般的に受け入れられているアルゴリズムはありますか?
副次的な質問として、Peterson のアルゴリズムとその類縁のものを見てきましたが、これらの相互排除アルゴリズムは、私が直面している問題とは異なる問題を解決しているようです (私はすでにアトミック操作を行っています)。私は、より高度な同期プリミティブ ( http://en.wikipedia.org/wiki/Mutual_exclusion#Advanced_mutual_exclusionのタイトルに基づく) と見なされるものに向けて取り組んでおり、別のクラスのアルゴリズムがあるかどうか疑問に思っています。それは、これらの核心の少ない問題に答えます。