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

  • arnejann

    arnejann

    3 Kasım 2007
  • ELPRESADOR

    ELPRESADOR

    21 HAZİRAN 2008
  • engineerguy

    engineerguy

    10 Ocak 2010