Biraz kafam karıştı Parallel.ForEach
.
Nedir Parallel.ForEach
ve tam olarak ne yapar?
Lütfen herhangi bir MSDN bağlantısına başvurmayın.
İşte basit bir örnek:
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
Bu örneği nasıl yeniden yazabilirim Parallel.ForEach
?
Bu soruya şu yanıt verilmiş olabilir stackoverflow.com/questions/3789998/…
—
Ujjwal Manandhar
@UjjwalManandhar Bu aslında oldukça farklı, çünkü
—
Reed Copsey
Parallel
sınıf ve PLINQ kullanımı arasındaki farkı soruyor .
Diğerleri nasıl yeniden yazabileceğinizi yanıtladı. Peki ne yapıyor? Tıpkı normalde olduğu gibi koleksiyondaki her öğe için bir "işlem" yapar
—
Jeppe Stig Nielsen
foreach
. Aradaki fark, paralel sürümün aynı anda birçok "eylem" yapabilmesidir. Çoğu durumda (kodu hangi bilgisayarın çalıştırdığına ve ne kadar meşgul olduğuna ve diğer şeylere bağlı olarak) daha hızlı olacaktır ve bu en önemli avantajdır. Paralel olarak yaptığınızda , öğelerin hangi sırayla işlendiğini bilemeyeceğinizi unutmayın . Her zamanki (seri) foreach
, lines[0]
önce gelen, sonra lines[1]
vb. Garantilidir .
@JeppeStigNielsen Her şeyi daha hızlı olmayacak çünkü işleri paralel hale getirmenin önemli bir yükü var. Yinelediğiniz koleksiyonun boyutuna ve içindeki eyleme bağlıdır. Yapılacak doğru şey Parallel.ForEach () kullanımı ile foreach () kullanımı arasındaki farkı ölçmektir . Çoğu zaman normal bir foreach () daha hızlıdır.
—
Dave Black
@DaveBlack Tabii. Her durumda daha hızlı mı yoksa daha yavaş mı olduğunu ölçmek gerekecek . Sadece genel olarak paralellik tanımlamaya çalışıyordum.
—
Jeppe Stig Nielsen