2011-10-27 38 views

cevap

16

Evet. Yan etki şu: , bir milyon göreviniz varsa, potansiyel olarak bir milyon iş parçacığı oluşturabilirsiniz.

her iplik yükü anahtarlama havai ve bağlamı onun bellek getirecektir dikkate almak gerekiyor. Bellek yükü o kadar da küçük değil, biz bir kaç MB burada konuşuyoruz, hatta binlerce ürünle bile sorun yaşayabilirsiniz.

5

LongRunning görevler kullanmayın gibi herhangi bir yan etkileri vardır, diğer engellemesini önlemek amacıyla küresel ve yerel kuyruklar, baypas gönderileceğini belirten Yerel kuyrukta sonra gelen iplikler.

Bu, Uzun Çalıştırma görevlerinin çoğuna sahipseniz, normalden daha fazla iş parçacığı oluşturabilir.

Bu soru üzerine cevapların bazı olumsuz özellikler görebilirsiniz:

http://social.msdn.microsoft.com/Forums/en/parallelextensions/thread/8304b44f-0480-488c-93a4-ec419327183b

+0

Biraz daha net olmak için güncelleştirildi (ve umarım daha çok MSDN'in ne söylediğine inline) – Holger

26

LongRunning seçeneği (bu eğer iş parçacığı havuzu büyük olasılıkla olacak DefaultScheduler destekli) o olmayan bir threadpool Konu üzerinde Task yürütmek tercih edebilir anlamına programlayıcıya bir ipucu. LongRunning seçeneğinin bir yan etkisi, bu Görev için Görev Çizgisine izin verilmemesidir. Bu, LongRunning Görevinin diğer iç içe geçmiş veya alt görevler oluşturduğu ve bu Görevlerden herhangi birinde Wait çağrıları oluşturulduğunda, her zaman farklı bir iş parçacığı üzerinde gömülü olmak yerine (yani, Wait işlemini gerçekleştiren aynı iş parçacığında çalıştırılacak) olacağı anlamına gelir. uzun zaman alabilir Görevler çok sayıda oluşturarak LongRunning ipucu hala Konular sayısında artmasını neden olabilecek olmadan tamamlamak için dikkati çekiyor başkalarının cevapları bağlamında

nedeniyle Konuya DefaultScheduler'un kullandığı enjeksiyon algoritması. Algoritma havuzu engellenen ve uzun bir süre için bir iş öğesi çalıştırmış olan havuzlar arasında ayrım yapmaz ve her iki durumda da iş akışını artırmak için havuza daha fazla iş parçacığı enjekte ederek yanıt verebilir.

+7

Reflectoring, .NET 4.0'dan itibaren ipucunu gösterir. her zaman uyulur. – usr