top of page

Memoria Transaccional Software en Java sobre Clojure: Un Análisis Básico de Rendimiento

Resumen:

 

En el ámbito de la concurrencia y el paralelismo, es conocido que el uso de técnicas de sincronización basadas en bloqueos para sincronizar hebras, es problemático. Cuando se introducen bloqueos para controlar el acceso a un recurso compartido, la probabilidad de cometer errores de control que den lugar a problemas de seguridad y de vivacidad es muy alta, y el análisis de la corrección del software que se desarrolla bajo este paradigma es muy complejo. Una alternativa ya consolidada en el ámbito de la investigación, si bien no asumida con carácter pleno en el ámbito de la producción de software, es la Memoria Transaccional Software (MTS), que protege el acceso a datos compartidos dentro de transacciones. Utilizando MTS, cuando dos hebras intentan acceder al mismo dato, el manejador de transacciones resuelve el conflicto, sin necesidad de utilizar cerrojos explícitos en nuestro código. Ello redunda en un software más legible y seguro, y con una concurrencia potencialmente mayor, al no haber espera de hebras. En este trabajo se analiza una implementación de MTS para Java, soportada por el lenguaje funcional Clojure, y se contrasta el rendimiento del mismo con el modelo de bloqueos estándar, que Java soporta bajo regiones críticas en el API de concurrencia estándar, y por cerrojos de varias clases en el API de concurrencia de alto nivel. Los resultados muestran que el modelo MTS para Java sobre Clojure analizado, está lejos de ofrecer una alternativa que ofrezca un rendimiento homologable al del modelo de bloqueos estándar.
 

 

 

Descargas:

  • Código (Solicite clave de descompresión a antonio.tomeu [at] uca.es y descargue aquí)

  • Texto    (Solicite clava de descompresión y descargue desde el mismo sitio) 

 

Imágenes:

 

bottom of page