質問

ClojureがSTMと呼ぶものと、HaskellでSTMとして実装されているものとの違いを見つけようとしています。実際の言語セマンティックの違いを取ると、ClojureのSTMの実装は他のものとは非常に異なると彼のスピーチで言っているので、私は少し混乱していますが、言語の選択とは別の違いを理解していません。

役に立ちましたか?

解決

Clojure STMには3つの大きなユニークな機能があります。

  1. MVCCスナップショットは、読み取りの無効化でトランザクションの再起動を回避します。
  2. Read-Writesの参照は、リソースの取得順序を手動で制御することを保証します。
  3. 通勤執筆のレトリを減らす明示的な通勤があります。

他のヒント

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)

Mark Volkmannは、Strange Loop 2009でSTMS全般(および特にClojureのSTM)について非常に詳細なプレゼンテーションを行いました。 ここ (記事とスライド ここ)。 ClojureのSTMがどのように機能するかを理解するための他のリソース(コード以外)は本当に知りません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top