2010-11-27 12 views
14

Según tengo entendido, existen varios algoritmos diferentes para implementar la memoria transaccional de software (y esta es un área de investigación bastante activa). ¿Dónde puedo encontrar (sin tener que bucear en el código fuente) que se utilizan en diferentes idiomas y bibliotecas, particularmente en Clojure y Haskell (GHC)?¿Qué algoritmos se utilizan en Clojure, Haskell (y otros idiomas) para STM?

Respuesta

15

El último recurso en la STM de Clojure - aparte del código en sí mismo - es el artículo Software Transactional Memory por Mark Volkmann.

Presenta una breve descripción de alto nivel de STM-the-approach (en comparación con otros enfoques de concurrencia), resume las diversas características de concurrencia disponibles en Clojure, luego se sumerge en CMOure's STM, describiendo exactamente lo que sucede durante una transacción y en última instancia yendo al nivel de las clases individuales involucradas. Además de ofrecer mucha información sobre el funcionamiento interno de la maquinaria STM de Clojure, contiene un buen número de observaciones muy perspicaces relacionadas con las características orientadas a la concurrencia de Clojure, ya que se utilizan en programas idiomáticos de Clojure.

El punto de entrada real a los recursos de STM de Mark es this page, que actualmente incluye algunas diapositivas de STM además del enlace a la última versión del artículo principal de STM.

+0

¡Gracias! Ese es el tipo de información que estaba buscando (y esa página contiene una explicación muy clara de Clojure STM BTW). – Jay

5

En un nivel muy alto, algo que es interesante acerca de la implementación de STM de Clojure es que es muy diferente de todas las demás implementaciones. Rich ha mirado mucho más hacia las bases de datos reales de alto rendimiento del mundo real que los artículos académicos sobre los STM hipotéticos. Por ejemplo, el STM de Clojure es, por lo que yo sé, el único STM que usa Multi Version Concurrency Control (MVCC), que es una técnica bien conocida en el mundo de las bases de datos (de hecho, no hay ninguna base de datos seria, que doesn ' t usa MVCC) pero prácticamente no se discute en el mundo de STM.

+4

En este momento, todavía no hay una buena comparación entre los diversos algoritmos/implementaciones de STM. Entonces sí, son bastante distintos. Y podemos hablar sobre qué semántica es la más natural. Pero no tenemos ninguna base fuera de la predisposición para decir que MVCC es mejor/peor que cualquier otra técnica de implementación en términos de eficiencia. * Podemos * observar que MVCC expone la posibilidad de escritura sesgada, que las implementaciones que conservan la semántica genuinamente serializable no lo hacen. (Aunque hay formas de trabajar en contra de esto también). – sclv

Cuestiones relacionadas