यहाँ दिए गए दस्तावेज के रूप में सिंगलटन पैटर्न के बारे में मेरे कुछ प्रश्न हैं: http://msdn.microsoft.com/en-us/library/ff650316.aspx
निम्नलिखित कोड लेख से एक उद्धरण है:
using System;
public sealed class Singleton
{
private static volatile Singleton instance;
private static object syncRoot = new object();
private Singleton() {}
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (syncRoot)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}
विशेष रूप से, उपरोक्त उदाहरण में, लॉक से पहले और बाद में दो बार अशक्त करने के लिए उदाहरण की तुलना करने की आवश्यकता है? क्या यह आवश्यक है? पहले ताला क्यों नहीं लगाया और तुलना करें?
निम्नलिखित को सरल बनाने में कोई समस्या है?
public static Singleton Instance
{
get
{
lock (syncRoot)
{
if (instance == null)
instance = new Singleton();
}
return instance;
}
}
क्या प्रदर्शन करना महंगा है?