Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 2976|Yanıt: 2

[Kaynak] C#'da tembellik konuları nasıl koruyor?

[Bağlantıyı kopyala]
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+MonitorEkranEvet, ö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
 Ev sahibi| Yayınlandı 2.07.2023 21:42:16 |
 Ev sahibi| Yayınlandı 4.07.2023 19:19:45 |
C# performans optimizasyonu: Lazy, Lazy<T>'i gecikmeyle başlatıyor
https://www.itsvse.com/thread-7700-1-1.html
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com