Clojure STMはHaskell STMとどのように異なりますか?
-
14-10-2019 - |
質問
ClojureがSTMと呼ぶものと、HaskellでSTMとして実装されているものとの違いを見つけようとしています。実際の言語セマンティックの違いを取ると、ClojureのSTMの実装は他のものとは非常に異なると彼のスピーチで言っているので、私は少し混乱していますが、言語の選択とは別の違いを理解していません。
解決
Clojure STMには3つの大きなユニークな機能があります。
- MVCCスナップショットは、読み取りの無効化でトランザクションの再起動を回避します。
- Read-Writesの参照は、リソースの取得順序を手動で制御することを保証します。
- 通勤執筆のレトリを減らす明示的な通勤があります。
他のヒント
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)
所属していません StackOverflow