Question

Je suis en train de trouver les différences entre ce que Clojure appelle une STM et ce qui est mis en œuvre dans Haskell comme STM. En prenant les différences sémantiques de la langue réelle de côté, je suis un peu confus comme Rich Hickey dit dans son discours que la mise en œuvre de Clojure de STM est très différent de tout le reste là-bas, mais je ne comprends pas les différences en dehors du choix de la langue.

Était-ce utile?

La solution

Clojure STM dispose de 3 grandes caractéristiques uniques:

  1. Met en œuvre MVCC instantané d'éviter les transactions sur le redémarrage infirmation lecture.
  2. références sur-Se assure que les écritures de lecture fournit une sorte de contrôle manuel sur l'ordre d'acquisition des ressources.
  3. A la navette explicite ce qui réduit le retries écrit commutatives.

Autres conseils

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

usage particulier sont des « transactions de mémoire Composables » et « la mémoire avec des données transactionnelles invariants ». La mise en œuvre de GHC de STM est en effet pas MVCC. Je ne me rappelle pas tous les détails de mise en œuvre, mais je crois comprendre que la description dans les journaux ne sont pas si différent de ce qui existe actuellement GHC.

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

Mark Volkmann a fait une présentation très détaillée sur STMs en général (et la STM Clojure en particulier) à 2009 Boucle étrange que vous pouvez trouver ici (article et diapositives ici ). Je ne sais pas vraiment de toute autre ressource (autre que le code) pour comprendre le fonctionnement de la STM Clojure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top