Hola Ezequiel,

Creo que el autor del blog, al tomar como equivalentes ambas implementaciones
comete un error. El autor señala que hay un problema posible con la
inicializacion static, pero pierde de vista otra cuestion. La implementacion no
static tiene la ventaja de que la creacion del singleton se demora hasta que es
necesaria.

En mi opinion, ambas implementaciones son correctas.

Si sirve para tu caso la inicializacion estatica, creo que es la mejor. Sin
embargo, a veces es util demorar la inicializacion del singleton tanto como sea
necesario o directamente evitarla si el singleton nunca es usado.

Si este es el caso y estas trabajando en un ambiente multithreaded, no queda
otro remedio que utilizar bloqueos.

El double check locking es necesario tambien, para evitar la condicion de
carrera.

Hay otros puntos interesantes relacionados con el bloqueo. Creo que es muy
importante utilizar una referencia subrogada privada para el bloqueo y evitar el
lock(this).

Carlos

> -----Original Message-----
> From: [email protected] [mailto:[EMAIL PROTECTED] On 
> Behalf Of Ezequiel Díaz Pacheco
> Sent: Miércoles, 07 de Febrero de 2007 09:47 p.m.
> To: [email protected]
> Subject: !-> [puntonet] Double-Checking, Locking,vo latile y 
> demás ‘cool’ codes
> 
> En los blogs de geeks.ms hicieron un post acerca de si vale o 
> no la pena utilizar double checking en los singletons.
> 
> El post está acá
> http://geeks.ms/blogs/unai/archive/2007/02/08/double-checking-
> locking-volatile-y-dem-s-cool-codes.aspx
> 
> ¿Qué opinan?
> 
> Ezequiel,
> Saludos.
> 


Responder a