Clojureで使用されているアルゴリズム、STMのHaskell(およびその他の言語)は何ですか?

StackOverflow https://stackoverflow.com/questions/4292866

質問

私が理解しているように、ソフトウェアトランザクションメモリを実装するためのいくつかの異なるアルゴリズムがあります(これは非常にアクティブな研究分野です)。特にClojureとHaskell(GHC)で、さまざまな言語やライブラリで使用される(ソースコードに飛び込むことなく)どこにありますか?

役に立ちましたか?

解決

ClojureのSTMの究極のリソース - コード自体とは別に - ソフトウェアトランザクションメモリ Mark Volkmannによる記事。

STM-the-Approachの簡単な高レベルの概要を提示します(同時性への他のアプローチと比較して)。Clojureで利用可能なさまざまな同時機能機能を要約し、ClojureのSTMに分割し、トランザクション中に何が起こるかを正確に説明し、最終的にはすぐに下ります関係する個々のクラスのレベルまで。 ClojureのSTM機械の内部の仕組みに関する多くの難しい情報を提供することに加えて、Clojureの同時志向の特徴に関連する非常に洞察に富んだ発言が慣用的なClojureプログラムで使用されています。

MarkのSTMリソースへの実際のエントリポイントは このページ, 、現在、メインSTM記事の最新バージョンへのリンクに加えて、いくつかのSTMスライドを備えています。

他のヒント

非常に高いレベルでは、ClojureのSTMの実装について興味深いことの1つは、他のすべての実装とは大きく異なることです。リッチは、仮想STMに関する学術論文よりも、実際の現実世界の高性能データベースにずっと見てきました。たとえば、ClojureのSTMは、データベースの世界でよく知られている手法であるマルチバージョンの同時制御(MVCC)を使用する唯一のSTMです(実際、そこにはほとんど深刻なデータベースがありません。 そうではありません MVCCを使用してください)が、STMの世界ではまったく議論されていません。

見る http://www.haskell.org/haskellwiki/software_transactional_memory Haskell(およびGHC)の場合 http://clojure.org/concurrent_programming Clojureのために。

GHCにはSTMライブラリが付属しており、ClojureにはSTMのテクニックがいくつかあると思います。

他の言語については、参照してください http://en.wikipedia.org/wiki/software_transaction_memory#implementations

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