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.
Lazy<T> örneğinin 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
| Name | Değer | Description |
|---|---|---|
| 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 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ı tamamlayan ilk iş parçacığı, örneğin değerini Lazy<T> ayarlar. Bu, alan adlarında olarak |
| ExecutionAndPublication | 2 | Kilitler, yalnızca tek bir iş parçacığının bir örneği iş parçacığı güvenli bir şekilde başlatabilmesini Lazy<T> sağlamak için kullanılır. Başlatma yöntemi etkili bir şekilde iş parçacığı güvenli bir şekilde yürütülür (alan adında olarak |
Açıklamalar
Oluşturucuların parametresini belirtmek için bu numaralandırmayı modeLazy<T> kullanın. Tüm oluşturucuların iş parçacığı eşitlemesi üzerindeki etkileri, parametreleri olup olmadıklarına mode bakılmaksızın bu numaralandırma açısından açıklanabilir.
Bir Lazy<T> örnek, kullanıcı tarafından belirtilen bir başlatma yöntemiyle veya parametresiz Toluş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 TLazy<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 belirtmeye Lazy<T> ek olarak, bu numaralandırma özel durum önbelleğe almayı etkiler. Bir Lazy<T> örnek için özel durumlar önbelleğe alındığında ö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. Özel durumları önbelleğe almanı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. None veya ExecutionAndPublication belirttiğinizde, önbelleğe alma işlemi bir başlatma yöntemi belirtmenize veya parametresiz oluşturucunun T kullanılmasına izin vermenize 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 T için veya Visual Basic'te new Lazy<Contents>(() => new Contents(), mode) parametresiz oluşturucuyu çağırabilir: New Lazy(Of Contents)(Function() New Contents()). Başlatma yöntemi belirtmeyen bir oluşturucu kullanırsanız, parametresiz T oluşturucu tarafından oluşan özel durumlar önbelleğe alınmaz. Aşağıdaki tabloda özel durum önbelleğe alma davranışı özetlemektedir.
| Modu | Başlatma yöntemini kullanma | için parametresiz oluşturucu kullanma T |
|---|---|---|
| Hiçbiri | Önbelleğe alınmış | Önbelleğe alınmadı |
| YayınAyrıCalı | Önbelleğe alınmadı | Önbelleğe alınmadı |
| ExecutionAndPublication | Önbelleğe alınmış | Önbelleğe alınmadı |