Czym Clojure STM różni się od Haskell STM?

Próbuję znaleźć różnice między tym, co Clojure nazywa STM, a tym, co jest zaimplementowane w Haskell jako STM. Biorąc na bok rzeczywiste różnice semantyczne języka jestem trochę zdezorientowany, jak Rich Hickey mówi w swoim przemówieniu, że implementacja STM Clojure jest bardzo różna od wszystkiego innego, ale nie rozumiem różnic poza wyborem języka.

Author: Don Stewart, 2010-12-30

3 answers

Clojure STM ma 3 duże unikalne cechy:

  1. implementuje migawkę MVCC unikanie transakcji restartuje po unieważnieniu odczytu.
  2. zapewnia referencje na odczyt-zapis zapewnia rodzaj ręcznej kontroli nad zamówieniem pozyskiwania zasobów.
  3. ma explicit commute, który zmniejsza liczbę powtórzeń przy zapisach przemiennych.
 25
Author: william gouvea,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-15 17:18:32

Dla Haskell STM, Zobacz dokumenty SPJ: http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/

Szczególnie przydatne są "złożone transakcje pamięci" i "pamięć transakcyjna z niezmiennikami danych". Implementacja STM GHC rzeczywiście nie jest MVCC. Nie pamiętam wszystkich szczegółów implementacji, ale rozumiem, że opis w gazetach nie różni się aż tak bardzo od tego, co Obecnie istnieje w GHC.

(zauważ, że MVCC, w clojure lub gdzie indziej, umożliwia zapisywanie-skew -- patrz np. tutaj: http://en.wikipedia.org/wiki/Snapshot_isolation )

 16
Author: sclv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-06 02:27:39

Mark Volkmann zrobił bardzo szczegółową prezentację na temat STM w ogóle (a STM Clojure w szczególności) na Strange Loop 2009, którą można znaleźć tutaj (artykuł i slajdy Tutaj ). Tak naprawdę nie znam żadnego innego źródła (poza kodem), aby zrozumieć, jak działa STM Clojure.

 12
Author: Alex Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-20 19:38:50