LazyThreadSafetyMode Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Bir Lazy<T> örneğin birden çok iş parçacığı arasında erişimi nasıl eşitleyeni belirtir.
public enum class LazyThreadSafetyMode
public enum LazyThreadSafetyMode
type LazyThreadSafetyMode =
Public Enum LazyThreadSafetyMode
- Devralma
Alanlar
ExecutionAndPublication | 2 | Kilitler, yalnızca tek bir iş parçacığının örneği iş parçacığı açısından güvenli bir Lazy<T> şekilde başlatabilmesini sağlamak için kullanılır. Etkili bir şekilde, başlatma yöntemi iş parçacığı açısından güvenli bir şekilde yürütülür (alan adında olarak |
None | 0 | Örnek Lazy<T> iş parçacığı güvenli değildir; örneğe birden çok iş parçacığından erişilirse, davranışı tanımlanmamıştır. Bu modu yalnızca yüksek performans kritik öneme sahip olduğunda ve Lazy<T> örneğin hiçbir zaman birden fazla iş parçacığından başlatılmayacağı garanti edildiğinde kullanın. Bir başlatma yöntemi ( |
PublicationOnly | 1 | Birden çok iş parçacığı aynı anda bir Lazy<T> örneği başlatmaya çalıştığında, tüm iş parçacıklarının başlatma yöntemini (veya başlatma yöntemi yoksa parametresiz oluşturucuyu) çalıştırmasına izin verilir. Başlatmayı tamamlamak için ilk iş parçacığı, örneğin değerini Lazy<T> ayarlar. Bu, alan adlarında olarak |
Açıklamalar
Oluşturucuların parametresini belirtmek için bu numaralandırmayı mode
Lazy<T> kullanın. İş parçacığı eşitlemesi üzerindeki tüm oluşturucuların etkileri, parametreleri olsun veya olmasın mode
, bu numaralandırma açısından açıklanabilir.
Bir Lazy<T> örnek, kullanıcı tarafından belirtilen başlatma yöntemi veya parametresiz T
oluşturucu tarafından başlatılır. Başlatma yöntemi bir Lazy<T> oluşturucunun valueFactory
parametresi tarafından belirtilir. yöntemi, örneği tarafından örneklenen türü olan bir örneğini T
Lazy<T>döndürür. Bir oluşturucunun parametresi valueFactory
yoksa, örneği başlatmak Lazy<T> için parametresiz T
oluşturucu kullanılır. Her iki durumda da, özelliği ilk kez çağırdığınızda Lazy<T>.Value başlatma gerçekleşir.
Bir örneğin iş parçacığı güvenliğini Lazy<T> belirtmeye ek olarak, bu numaralandırma özel durum önbelleğe almayı etkiler. Bir Lazy<T> örnek için özel durumlar önbelleğe alınırsa örneği başlatmak için tek bir şansınız olur. Özelliği ilk kez çağırdığınızda Lazy<T>.Value bir özel durum oluşursa, bu özel durum önbelleğe alınır ve özelliğine Lazy<T>.Value yapılan sonraki tüm çağrılarda yeniden oluşturulur. Önbelleğe alma özel durumlarının avantajı, hatalar oluştuğunda bile her iki iş parçacığının her zaman aynı sonucu almasıdır.
PublicationOnly modunu belirttiğinizde, özel durumlar hiçbir zaman önbelleğe alınmaz. Yok veya ExecutionAndPublication belirttiğinizde, önbelleğe alma işlemi bir başlatma yöntemi belirttiğinize veya parametresiz oluşturucunun T
kullanılmasına izin verip vermediğinize bağlıdır. Bir başlatma yöntemi belirtmek, bu iki mod için özel durum önbelleğe almayı etkinleştirir. Başlatma yöntemi çok basit olabilir. Örneğin, C# dilinde veya New Lazy(Of Contents)(Function() New Contents())
Visual Basic'te için T
new Lazy<Contents>(() => new Contents(), mode)
parametresiz oluşturucuyu çağırabilir. Başlatma yöntemi belirtmeyen bir oluşturucu kullanırsanız parametresiz oluşturucu T
tarafından oluşan özel durumlar önbelleğe alınmaz. Aşağıdaki tabloda özel durum önbelleğe alma davranışı özetlemektedir.
Mod | Başlatma yöntemini kullanma | için parametresiz oluşturucu kullanma T |
---|---|---|
Hiçbiri | Önbelleğe alınmış | Önbelleğe alınmadı |
YayınAyrıca | Önbelleğe alınmadı | Önbelleğe alınmadı |
ExecutionAndPublication | Önbelleğe alınmış | Önbelleğe alınmadı |