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ÅŸ:

Non-senkronize statik yöntemler parçac...
Statik başlatıcılar Java iş parçacığı ...
"Java tarih biçimi iş parçacığı i...
Bu iş Parçacığı için Güvenli değil mi?...
ThreadPoolExecutor iş parçacığı güvenl...