public static IJuego <T> dameElJuego() { if (instancia == null) { lock (testigo) { if (instancia == null) { instancia = Activator.CreateInstance(typeof(T), true) as T; } } } return(instancia); }
public static IJuego <T> dameElJuego() { // patrón de doble bloqueo. Aseguramos ok un entorno de concurrencia if (instancia == null) { //cojo el testigo... no puede pasar nadie si ya hay alguien dentro lock (testigo) { if (instancia == null) { // el createInstance equivale a un new instancia = Activator.CreateInstance(typeof(T), true) as T; } } } return(instancia); }