Frage

Wie ich verstehe, gibt es verschiedene Algorithmen zur Implementierung Software Transactional Memory (und dies ist ein recht aktives Forschungsgebiet). Wo finde ich (ohne in dem Quellcode zu tauchen mit), die in verschiedenen Sprachen und libraryes verwendet werden, insbesondere in Clojure und Haskell (GHC)?

War es hilfreich?

Lösung

Die ultimative Ressource auf STM Clojure ist - abgesehen von dem Code selbst - ist die Software Transactional Memory Artikel von Mark Volkmann.

Es gibt einen kurzes hohe Niveau Überblick über STM-the-Ansatz (im Gegensatz zu anderen Ansätzen in der Parallelität im Vergleich), fasst die verschiedene Parallelität in Clojure verfügbar kennzeichnet, dann taucht in Clojure STM, beschrieb genau das, was während einer Transaktion geschieht und schließlich geht bis auf die Ebene der einzelnen Klassen beteiligt. Neben vielen harten Informationen über das Innenleben von Clojure STM Maschinen anbieten zu können, enthält es eine ganze Reihe von sehr interessanten Bemerkungen zu Clojure der Gleichzeitigkeit orientierte Funktionen beziehen, wie sie in idiomatischen Clojure-Programmen verwendet werden.

Der tatsächliche Eintrittspunkt zu Marks STM Ressourcen diese Seite , mit derzeit etwa STM Dias zusätzlich zu dem Link auf die neueste Version des Haupt STM Artikels.

Andere Tipps

Bei einem sehr hohen Niveau, eine Sache, die interessant, über die Umsetzung von STM Clojure ist, dass sie von allen anderen Implementierungen sehr unterschiedlich sind. Rich hat sich viel mehr an den tatsächlichen realen Welt High-Performance-Datenbanken als wissenschaftliche Arbeiten über hypothetische STMs aussah. Zum Beispiel ist Clojure STM meines Wissens die einzige STM, die Multi Version Concurrency Control (MVCC) verwendet, die eine bekannte Technik, die in der Datenbank Welt ist (in der Tat, es gibt so ziemlich keine ernsthafte Datenbank ist, die nicht Verwendung MVCC), aber so ziemlich gar nicht in der STM-Welt diskutiert.

Siehe http://www.haskell.org/haskellwiki/Software_transactional_memory für Haskell (und GHC) und http://clojure.org/concurrent_programming für Clojure.

Ich glaube, dass GHC mit einer STM-Bibliothek kommt, und es gibt einige Techniken für STM in Clojure.

Für weitere Sprachen finden Sie unter http://en.wikipedia.org/wiki/Software_transactional_memory#Implementations

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top