SORU
3 Aralık 2008, ÇARŞAMBA


C# Sıra kullanmak için daha iyi olurdu.Senkronize veya lock() iş parçacığı güvenliği için?

Güvenli iş parçacığı olduğundan emin olmak istiyorum, o Sıra bir nesne var. Bu gibi kilit bir nesne kullanmak daha iyi olur

lock(myLockObject)
{
//do stuff with the queue
}

Ya da Sıra kullanmak için tavsiye edilir.Senkronize: bunun gibi

Queue.Synchronized(myQueue).whatever_i_want_to_do();

Web docs okuma Sırası kullanmam gerektiğini söylüyor.Güvenli iş parçacığı yapmak için senkronize, ama sonra bir örnek kilit bir nesne kullanarak verir. Microsoft Knowledge Base makalesi:

Bu iş parçacığı güvenliğini güvence altına almak için Sıra, tüm işlemler yapılmalıdır bu sarıcı ile sadece.

Bir topluluk içinde sıralanıyor özünde iş parçacığı güvenli bir yordam. Bir toplama olsa bile , hala diğer konuları senkronize neden toplama, değiştirme numaralandırıcısı istisna. Sırasında iş parçacığı güvenliği sağlamak ya da kilitleyebilirsiniz numaralandırma tüm sırasında toplama numaralandırma veya özel durumları yakalamak diğer tarafından yapılan değişiklikleri kaynaklanan iş parçacığı.

Eğer Eşzamanlı arama() iş parçacığı güvenliği ne anlamı var? emin olun yok Bir şey mi kaçırıyorum?

CEVAP
3 Aralık 2008, ÇARŞAMBA


Şahsen ben her zaman kilitlemeyi tercih ediyor. Anlamına gelirsanaparçalı karar veriyor. Sadece Senkronize sarıcı güveniyor, her bir işlem eşitlenir ama eğer birden çok şey (örneğin, bütün koleksiyonu üzerinden yineleme yapmak gerekiyorsa zaten kilitlemeniz gerekir. Sadelik adına, tek bir şey hatırlamak zorunda - uygun kilitlemeyi tercih ederim!

Eğer . yorumlarda da belirtildiği Gibi DÜZENLEYİN: ^em>olabilirharika yüksek seviyeli soyutlamalar, kullanın. Ve eğeryapınkilitli beklediğim bir kilit kullanın, dikkatli ol - belge nerede ve mümkün olduğunca kısa bir süre için/serbest bırakma kilitleri (performans daha doğruluğu). Bir kilit tutan, iç içe kilitleri önlemek vb sırasında bilinmeyen kodunu çağırma kaçının.

.NET 4çoküst düzey soyutlamalar için daha fazla destek (kilidi serbest kod dahil). Her iki şekilde de, ben hala senkronize ambalaj kağıtları kullanarak tavsiye etmem.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bigapplemagic

    Bigapplemagi

    22 EYLÜL 2011
  • friendz.net

    friendz.net

    29 EKİM 2010
  • TomOdellVEVO

    TomOdellVEVO

    29 Mayıs 2012