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

  • Branboy3

    Branboy3

    12 AĞUSTOS 2012
  • EminemMusic

    EminemMusic

    9 ŞUBAT 2007
  • Tube Time

    Tube Time

    14 Mayıs 2013