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

  • jesiel santos

    jesiel santo

    15 Ocak 2009
  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • SavageLuxxxGaming - Daily NBA 2K15 & NBA Live 15 Enjoy And Subscribe!

    SavageLuxxxG

    11 Ocak 2013