32

ClojureがSTMと呼んでいるものと、HaskellにSTMとして実装されているものとの違いを見つけようとしています。実際の言語のセマンティックの違いは別として、Rich HickeyがスピーチでClojureのSTMの実装は他のどの言語とも大きく異なると言っているので、少し混乱していますが、言語の選択以外の違いはわかりません。

4

3 に答える 3

26

Clojure STMには、3つの大きな独自の機能があります。

  1. MVCCスナップショットを実装し、読み取りが無効になったときにトランザクションが再開しないようにします。
  2. 読み取り/書き込みの参照が、リソース取得順序の一種の手動制御を提供することを保証します。
  3. 可換書き込みの再試行を減らす明示的な通勤があります。
于 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 に答える
13

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

于 2010-12-30T15:39:50.323 に答える