|
|
Yayınlandı 2.07.2023 21:41:55
|
|
|

.NET 4.0'dan sonra, .NET Framework'te güvenli tembel bir yükleme türü sağlanmıştırTembel Lazy, çok iş parçacıklı bir ortamda çalışmak garantisi olarakGetValueFonksiyon yalnızca bir kez çalıştırılır, böylece uygulanırSingleton modu
Geçmişte, tekli desenleri uygulamak veya sınıfların statik başlatma fonksiyonlarını kullanmak için kuadratik yargı kilitleri kullanırdık Lazy tipinde bu süreç basitleştirilmiş ve performans daha iyi hale getirilmiştir
Lazy oluşturulduğunda, iş parçacığı kurulum modunu belirleyebilirsiniz, şu anda iki mod var,Sadece Yayın,Çıkar ve Yayın
Sadece Yayın modu
1. Başlatma fonksiyonunu çalıştırın ve dahili bir kutuya alınKutuTip, null değer yargısı problemini çöz, eğer durum oluşturulduysa, sıfır döndürülür,Süreç iş parçacıklığı açısından güvensiz
2. m_boxed boş olup olmadığını belirleyin, m_boxed değer tarafından kaydedilen alan mı, boş ise kutuya ayarlanır, bu yöntem atomikliği sağlayabilir,Süreç iş parçacık güvenli
3. CreateValue boş dönerse, diğer iş parçacıkları zaten örnekler oluşturmuş ve önceden oluşturulmuş örnekler olarak ayarlanmıştır
4. Başlatma yöntemini başlatılmış olarak işaretleyin, ki bu genellikle eşzamanlı çalıştırmada gerçekleşir, ve CreateValue'yu birden fazla kez çalıştırın
Sadece Yayınmod şu temelde kullanılırInterlocked.CompareExchange, bu sınıf atomiklik yöntemlerini içerirCAS (Karşılaştır ve takas)
CAS, CPU tarafından sağlanan atomik komutlarla uygulanır ve farklı çalışma zamanı sürümleri farklı uygulamalara sahip olabilir Kilitlenmiş özel uygulama Yerel yöntemde, ilgilenen arkadaşlar coreclr/jvm kodu aracılığıyla belirli uygulamayı kontrol edebilir
Bu modda,Bir tekli fonksiyon birden fazla kez çalışabilir, ancak sonunda yalnızca bir örnek elde edileceği garanti edilir
ExcutionAndPublication modu
Çıkar ve Yayınmodda kullanılan modVolatile+Monitor,EkranEvet, öylekilitBu ifadenin uygulanması, yani yerel koddaki Monitor uygulaması, ağır bir kilittir
EkranKuyruk ve iş parçacığı uykusu desteklenir, bu da tüm metod bloğunun tek iş parçacıklı bir durumda çalıştırılmasını sağlar
Orijinal bağlantı:Bağlantı girişi görünür. |
Önceki:ASP.NET ThreadStatic, CallContext ve HttpContext arasındaki farkÖnümüzdeki:SQL Server, veritabanına mevcut bağlantı sayısını sorgular
|