¿Qué es un patrón de plantilla genérico singleton seguro para subprocesos en C #?
Tengo el siguiente patrón de C # singleton, ¿hay alguna forma de mejorarlo?
public class Singleton<T> where T : class, new()
{
private static object _syncobj = new object();
private static volatile T _instance = null;
public static T Instance
{
get
{
if (_instance == null)
{
lock (_syncobj)
{
if (_instance == null)
{
_instance = new T();
}
}
}
return _instance;
}
}
public Singleton()
{ }
}
Ejemplo de uso preferido:
class Foo : Singleton<Foo>
{
}
Relacionado: