2010-01-28 17 views
32

C#, şu anda Çoklu Threading öğreniyorum, ancak tüm öğrenme ile ben iyi uygulamaları öğrenmek ister. Şu anda alan bulanık görünüyor. Temelleri anlıyorum ve iş parçacığı oluşturabilirim.Çok Threading

Çok iş parçacıklı uygulamalar oluştururken nelere dikkat etmeliyim. Bilmem gereken kurallar veya en iyi uygulamalar var mı? Ya da fişten aşağı kaymayı önlemek için hatırlanması gereken bir şey var mı?

Yanıtlar için teşekkürler. MSDN Madde tehlike alanlarına dokunmadan ve/yönetenler alanların etrafında çalışmak için en iyi uygulamaları vermeyi gerçekten iyi bir iş çıkarmış

+1

C# kullanıyorsanız, Görev Paralel Kitaplığı'nı kullanmayı düşünmelisiniz. İş parçacığı ve kilitler yerine Görevler ve Engeller hakkında düşünmenizi sağlar. Soyutlamayı geliştirir. –

+0

@Ade Miller: Bu harika bir öneri - Reaktif Uzantıları kurarak TPL ve PLINQ'yi .Net3.5'te de kullanabileceğinizi ekleyeceğim: http://msdn.microsoft.com/en-us/ devlabs/ee794896.aspx –

cevap

33

here bulunabilir, ben ekleyeceğiz:

  1. Kendi işlerinizi yapma. ThreadPool (veya yeni Task Parallel Library Görevler) kullanmayı tercih edin. Kendi iş parçanızı yönetmek, nadiren, doğru tasarım kararı ise.
  2. UI ile ilgili sorunlara dikkat edin. Control.Invoke (Windows Forms) ve Dispatcher.Invoke (WPF) veya SynchronizationContext kullanın. Post/Send ile Geçerli
  3. Uygun olduğunda BackgroundWorker class kullanarak favoriler.
  4. senkronizasyon
  5. Favor mümkün Daha gelişmiş aldıktan sonra

kilitleme üzerinde Interlocked class yılında yöntemler gerektirir şeyi senkronize etmek emin olun en az

  • için kilitleri yoluyla senkronizasyonu tutmaya çalışın ve vardır

    1. false sharing dikkat: için, optimize etmek başka şeyler denemeye bakmak. Bu, dizilerle çalışırken özellikle sorunludur, çünkü her dizi bir dizideki herhangi bir öğeye yazıldığında .NET öğesinde sınır denetimi içerir ve bu da öğenin 0 (hemen hemen bellekte 0 öğesinden önce) öğesinin yakınında diziye erişime neden olur. Bu perfüre neden olabilir. yokuş aşağı gitmek. döngü koşullarda çalıştığı özellikle
    2. , kapatma konularında dikkatli olun. Delegeler yaparken yanlış kapsamda bir değişkene kapatıyorsanız, hatalı hatalar oluşabilir.
  • 2

    çok bu sindirerek başlamanızı öneririz.

    +0

    Bunu getirdiğinize sevindim. Bu 80 sayfalık PDF'yi yazdırdım ve şimdi bunun üzerinden devam ediyorum. –

    İlgili konular