SORU
24 EYLÜL 2010, Cuma


Paralel.() ForEach(IEnumerable<T>.vs dosyalarda grup() AsParallel)

Erg, KORUYUCU olarak bu iki yöntem Reflektör kullanarak, ama onları bulamıyor bulmaya çalışıyorum. Bu iki parçacıkları arasındaki fark nedir?

Bir:

IEnumerable<string> items = ...

Parallel.ForEach(items, item => {
   ...
});

B:

IEnumerable<string> items = ...

foreach (var item in items.AsParallel())
{
   ...
}

Diğer üzerinde kullanarak farklı sonuçları vardır? (Her iki örnek parantez vücudunda ne yapıyorsam, iş parçacığı güvenli olduğu varsayılmaktadır.)

CEVAP
24 EYLÜL 2010, Cuma


Oldukça farklı bir şey yapıyorlar.

İlki anonim temsilci alır, ve tüm farklı öğeler için paralel olarak bu kod üzerinde birden çok iş parçacığı çalışır.

İkincisi, bu senaryoda yararlı. Özetle, birden çok iş parçacığı üzerinde sorgu yapmak ve sonuç birleştirmek için tasarlanmıştır, ve tekrar arama iş ver. Foreach deyimi kodu her zaman UI iş parçacığı üzerinde kalır.

Sadece eğer bir şey kontrol etmeniz AsParallel() çağrı sağında sorgu gibi pahalı yaparsan mantıklı:

 var fibonacciNumbers = numbers.AsParallel().Select(n => ComputeFibonacci(n));

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010
  • Music EuroDance 2

    Music EuroDa

    12 Mayıs 2011
  • The Bad Tutorials

    The Bad Tuto

    6 EKİM 2009