La implementación WhatILearntToday de una clase Singleton Thread-Safe es la siguiente:
public class SingletonClass
{
private SingletonClass()
{
}
//Implementation #1 NO Thread-Safe: puede fallar si varios hilos intentan instanciarla al mismo tiempo
//static SingletonClass _instance = null;
//public static SingletonClass GetInstance()
//{
// if (_instance == null)
// {
// _instance = new SingletonClass();
// }
// return _instance;
//}
//Implementation #2 Thread-safe
static readonly SingletonClass _instance = new SingletonClass();
public static SingletonClass GetInstance()
{
get
{
return _instance;
}
}
public string GetWelcomeMessage()
{
return "Welcome to the Singleton world!! ";
}
}
Mi implementación (también Thread-Safe) es:
public class SingletonClass
{
private SingletonClass()
{
}
static readonly SingletonClass _instance = null;
static object lockThis; public static SingletonClass GetInstance() { lock(lockThis) {
if (_instance == null)
_instance = new SingletonClass();
}
return _instance;
}
public string GetWelcomeMessage()
{
return "Welcome to the Singleton world!! ";
}
}
No hay comentarios:
Publicar un comentario