Next: Aviso de hecho
Up: Patrones de diseño para
Previous: Guardián
thread-safe interface
Se usa cuando una aplicación
- usa muchos hilos que trabajan con los mismos objetos
- y se quiere minimizar el trabajo adicional para obtener y devolver
la llave que permite acceso en modo exclusivo
Ejemplos:
Comportamiento exigido:
- se quiere evitar auto-bloqueo debido a llamadas del mismo hilo
para obtener la misma llave
- se quiere minimizar el trabajo adicional
Posible solución:
- se aprovecha de las interfaces existentes en el lenguaje de programación
para acceder a los componentes de una clase
- cada hilo accede solamente a métodos públicos mientras todavía no ha
obtenido la llave
- dichos métodos públicos intentan obtener la llave cuanto antes
y delegan después el trabajo a métodos privados (protegidos)
- los métodos privados (o protegidos) asumen que se haya obtenido la llave
Detalles de la implementación:
- los monitores de Java proporcionan directamente un mecanismo
parecido al usuario, sin embargo, ciertas clases de Java
(p.ej., tablas de dislocación (hash tables)) usan
internamente este patrón por razones de eficiencia
- hay que tener cuidado de no corromper la interfaz, p.ej., con el
uso de métodos amigos (friend) que tienen acceso
directo a partes privadas de la clase
- el patrón no evita bloqueo, solamente facilita una implementación
mas transparente
Next: Aviso de hecho
Up: Patrones de diseño para
Previous: Guardián
© 2003, Dr. Arno Formella, Universidad de Vigo, Departamento de Informática