Next: Objetos activos
Up: Patrones de diseño para
Previous: Interfaz segura para multi-hilos
El patrón double-checked locking optimization es conocido también
como lock hint.
Se usa cuando una aplicación
- usa objetos (clases) que necesitan una inicialización única
y exclusiva (patrón Singleton)
- que no se quiere realizar siempre
- sino solamente en caso de necesidad explícita
- y que se puede realizar por cualquier hilo que va a usar el objeto
por primera vez.
Ejemplos:
Comportamiento exigido:
- se quiere un trabajo mínimo en el caso que la inicialización ya
se ha llevado a cabo
- se quiere que cualquier hilo puede realizar la inicialización
Posible solución:
- se usa un guardián para obtener exclusión mutua
- se comprueba dos veces si la inicialización ya se ha llevado a cabo:
una vez antes de obtener la llave y una vez después de haber
obtenido la llave
Detalles de la implementación:
- hay que marcar la bandera que marca si la inicialización está
realizada como volátil (volatile) para evitar posibles
optimizaciones del compilador
- el acceso a la bandera tiene que ser atómico
Next: Objetos activos
Up: Patrones de diseño para
Previous: Interfaz segura para multi-hilos
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática