32 votes

En quoi Clojure STM diffère-t-il de Haskell STM?

J'essaie de trouver les différences entre ce que Clojure appelle un STM et ce qui est implémenté dans Haskell en tant que STM. Mis à part les différences sémantiques de langage, je suis un peu confus lorsque Rich Hickey dit dans son discours que la mise en œuvre de STM par Clojure est très différente de tout ce qui existe ailleurs, mais je ne comprends pas les différences en dehors du choix de langue.

26voto

william gouvea Points 306

Clojure STM possède 3 grandes caractéristiques uniques:

  1. Tout d’abord, qui implémente l’intervalle instantané MVCC en évitant les transactions, redémarre après une invalidation en lecture.
  2. Assurez-vous que les références en lecture-écriture fournissent une sorte de contrôle manuel de la commande d’acquisition des ressources.
  3. Dispose d'une commutation explicite qui réduit les tentatives sur les écritures commutatives.

17voto

sclv Points 25335

Pour Haskell, STM, voir SPJ de documents: http://research.microsoft.com/en-us/um/people/simonpj/papers/stm/

De particulier à utiliser sont "Composable mémoire transactions" et "la mémoire Transactionnelle avec les données invariants". GHC la mise en œuvre de la STM, en effet, n'est-ce pas MVCC. Je ne me souviens pas de tous les détails de l'implémentation, mais ma compréhension est que la description dans les journaux n'est pas différent de ce qui existe actuellement dans GHC.

(notez que MVCC, en clojure ou ailleurs, rend possible l'écriture d'inclinaison -- voir, par exemple, ici: http://en.wikipedia.org/wiki/Snapshot_isolation)

13voto

Alex Miller Points 28225

Mark Volkmann a fait une présentation très détaillée sur les STM en général (et la STM de Clojure en particulier) à Strange Loop 2009 que vous pouvez trouver ici . Je ne connais pas vraiment d'autre ressource (que le code) pour comprendre le fonctionnement du STM de Clojure.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X