Parece que ha aumentado recientemente el interés en los marcos de STM (memoria transaccional de software) y las extensiones de lenguaje. Clojure en particular tiene una implementación excelente que usa MVCC (multi-version concurrency control) en lugar de un registro de compromiso continuo. GHC Haskell también tiene an extremely elegant STM monad que también permite la composición de la transacción. Finalmente, para activar mi propia bocina solo un poco, recientemente implementé un STM framework for Scala que aplica de forma estática las restricciones de referencia.¿Alguna experiencia real usando la memoria transaccional de software?
Todos estos son experimentos interesantes, pero parecen estar limitados solo a esa esfera (experimentación). Entonces mi pregunta es: ¿alguno de ustedes ha visto o usado STM en el mundo real? Si es así, ¿por qué? ¿Qué tipo de beneficios trajo? ¿Qué hay del rendimiento? (parece haber una gran cantidad de información contradictoria sobre este punto) ¿Volvería a utilizar STM o preferiría usar alguna otra abstracción de concurrencia como actores?
Si le preguntas esto en la lista clojure, obtendrás muchas respuestas. Creo que clojure está impulsado por las necesidades que Rich Hickey realmente tiene y su soporte STM está ahí porque lo necesita, no como un experimento. –
¡Oh, estoy seguro de que lo haría! Pero estaba más interesado en los usos de STM fuera de Clojure-land. Después de todo, no es una idea nueva, debería haber * alguien * que la encuentre útil. –
Como nota al margen, parece que hay algo de experimentación en curso con STM en .NET por parte de Microsoft, lo suficiente como para lanzar ya una implementación que funcione: http://msdn.microsoft.com/en-us/devlabs/ee334183.aspx - Ahora dudo que esto se haga solo por el gusto de hacerlo, y la integración con .NET definitivamente introduce un ángulo muy pragmático, y me inclino a considerar el hecho de que esto incluso se considera seriamente como una tecnología que madura lo suficiente para "producción". –