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

  • cosmicrocketman

    cosmicrocket

    17 NİSAN 2006
  • Google

    Google

    18 EYLÜL 2005
  • hotstrikegently

    hotstrikegen

    26 AĞUSTOS 2011