C# statik yapıcı iş parçacığı güvenli? | Netgez.com
SORU
10 AÄžUSTOS 2008, Pazar


C# statik yapıcı iş parçacığı güvenli?

Diğer bir deyişle, bu Tek uygulama iş parçacığı güvenli

public class Singleton
{
    private static Singleton instance;

    private Singleton() { }

    static Singleton()
    {
        instance = new Singleton();
    }

    public static Singleton Instance
    {
        get { return instance; }
    }
}

CEVAP
10 AÄžUSTOS 2008, Pazar


Statik kurucular bir sınıfın tüm örneklerini oluşturulur veya herhangi bir statik üye erişilir önce sadece bir kez uygulama etki alanı başına koş, garantisi vardır. http://msdn.microsoft.com/en-us/library/aa645612.aspx

Uygulama gösterildiği ilk inşaat için iş parçacığı güvenli olduğunu, kilitleme ya da null hiçbir test Singleton nesne oluşturmak için gereklidir. Ancak, bu örneği kullanın senkronize olacağı anlamına gelmez. Bu yapılabilir çeşitli yolları vardır; aşağıda bir gösterdim.

public class Singleton
{
    private static Singleton instance;
    // Added a static mutex for synchronising use of instance.
    private static System.Threading.Mutex mutex;
    private Singleton() { }
    static Singleton()
    {
        instance = new Singleton();
        mutex = new System.Threading.Mutex();
    }

    public static Singleton Acquire()
    {
        mutex.WaitOne();
        return instance;
    }

    // Each call to Acquire() requires a call to Release()
    public static void Release()
    {
        mutex.ReleaseMutex();
    }
}

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • circuschina

    circuschina

    16 Mart 2007
  • Hallucination Land

    Hallucinatio

    14 Ocak 2011
  • Rozetked | Обзоры

    Rozetked | Ð

    5 AÄžUSTOS 2011