Ist Faul<T> eine gute Lösung für eine thread-sichere lazy geladen singleton?
Implementierten wir ein lazy geladen singleton mit Doppel-Verriegelung auf zu bekommen, um sicherzustellen, dass die Instanz wird nur einmal initialisiert (und nicht zweimal aufgrund der thread-race conditions).
Ich Frage mich, ob Sie einfach Lazy<T>
ist eine gute Lösung für dieses problem?
I. E.
private static Lazy<MyClass> _instance = new Lazy<MyClass>(() => return new MyClass());
public static MyClass Instance
{
get
{
return _instance.Value;
}
}
- Absolut, ja. Siehe csharpindepth.com/Articles/General/Singleton.aspx
- msdn.microsoft.com/en-us/library/dd642331%28v=vs.110%29.aspx
- Natürlich. Guter Artikel von Jon Sketch zu dem Thema: csharpindepth.com/articles/general/singleton.aspx
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich schlage vor, Sie Lesen referencede Artikel Kommentare:
In allen Fällen die
Lazy<T>
Klasse ist thread-sicher, aber man muss Bedenken, dass dieValue
dieses Typs können thread-unsafe, und kann beschädigt sein in multithreading-Umgebung:Du kannst auch jeder Konstruktor, die Sie mögen abhängig von der Umgebung der Anwendung.