Pregunta

Estoy tratando de encontrar las diferencias entre lo que llama Clojure un STM, y su aplicación en Haskell como STM. Tomando el idioma real de las diferencias semánticas a un lado estoy un poco confundido como Rich Hickey dice en su discurso que la aplicación de STM de Clojure es muy diferente a cualquier otra cosa por ahí, pero no entiendo las diferencias aparte de la elección del idioma.

¿Fue útil?

Solución

Clojure STM tiene 3 grandes características únicas:

  1. Instrumental MVCC foto instantánea evitando las transacciones se reinicia en la invalidación de lectura.
  2. Asegura referencias sobre-escribe leer proporciona una especie de control manual sobre la orden de adquisición de recursos.
  3. ¿Ha conmutan explícita que reduce reintentos en las escrituras conmutativa.

Otros consejos

Para Haskell STM, consulte los documentos de SPJ: http: / /research.microsoft.com/en-us/um/people/simonpj/papers/stm/

De uso particular son "transacciones de memoria Composable" y "memoria transaccional con invariantes de datos". implementación de STM de GHC de hecho no es MVCC. No recuerdo todos los detalles de implementación, pero mi opinión es que la descripción de los documentos no es tan diferente de lo que existe actualmente en GHC.

(nota que MVCC, en clojure o en otro lugar, hace posible sesgo de escritura-- véase, por ejemplo, aquí: http://en.wikipedia.org/wiki/Snapshot_isolation )

Marcar Volkmann hizo una presentación muy detallada sobre los STM en general (y los STM Clojure en particular) en el lazo extraño 2009, que se puede encontrar aquí (artículo y diapositivas aquí ). Realmente no conozco ningún otro recurso (que no sea el código) para la comprensión de cómo funciona el STM de Clojure.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top