15

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

4

3 に答える 3

17

Clojure の STM に関する究極のリソース (コード自体は別として) は、Mark Volkmann によるSoftware Transactional Memoryの記事です。

STM-the-approach の簡単な高レベルの概要を示し (並行処理に対する他のアプローチと比較して)、Clojure で利用可能なさまざまな並行処理機能を要約してから、Clojure の STM に飛び込み、トランザクション中に何が起こるかを正確に説明し、最終的にはすぐにダウンします。関連する個々のクラスのレベルまで。Clojure の STM 機構の内部動作に関する多くの確かな情報を提供することに加えて、慣用的な Clojure プログラムで使用される Clojure の並行性指向の機能に関連する非常に洞察に満ちたコメントが多数含まれています。

Mark の STM リソースへの実際のエントリ ポイントは、このページです。現在、主要な STM 記事の最新バージョンへのリンクに加えて、いくつかの STM スライドが掲載されています。

于 2010-11-27T20:58:52.350 に答える
6

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

于 2010-11-27T22:07:31.087 に答える
5

Haskell (および GHC)についてはhttp://www.haskell.org/haskellwiki/Software_transactional_memoryを、Clojure についてはhttp://clojure.org/concurrent_programmingを参照してください。

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

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

于 2010-11-27T17:26:50.627 に答える