ClojureがSTMと呼んでいるものと、HaskellにSTMとして実装されているものとの違いを見つけようとしています。実際の言語のセマンティックの違いは別として、Rich HickeyがスピーチでClojureのSTMの実装は他のどの言語とも大きく異なると言っているので、少し混乱していますが、言語の選択以外の違いはわかりません。
質問する
3419 次
3 に答える
26
Clojure STMには、3つの大きな独自の機能があります。
- MVCCスナップショットを実装し、読み取りが無効になったときにトランザクションが再開しないようにします。
- 読み取り/書き込みの参照が、リソース取得順序の一種の手動制御を提供することを保証します。
- 可換書き込みの再試行を減らす明示的な通勤があります。
于 2010-12-30T08:46:03.437 に答える
17
Haskell STMについては、SPJの論文を参照してください:http ://research.microsoft.com/en-us/um/people/simonpj/papers/stm/
特に有用なのは、「構成可能なメモリトランザクション」と「データ不変条件を使用したトランザクションメモリ」です。GHCによるSTMの実装は、実際にはMVCCではありません。実装の詳細をすべて思い出せませんが、論文の説明は現在GHCに存在するものとそれほど変わらないことを理解しています。
(MVCCは、clojureまたは他の場所で書き込みスキューを可能にすることに注意してください-たとえば、ここを参照してください:http: //en.wikipedia.org/wiki/Snapshot_isolation)
于 2010-12-31T02:23:08.217 に答える