Parallel.ForEach öğesinin ilk döngüsünde bir kod çalıştırmak istiyorum. Sadece ilk döngüde hangisi ise. Bunun nedeni, döngü içindeki kod tarafından üretilen diske bazı tanılama verileri yazmaktır. İlk döngüden sonra veriler sadece bellekte tutulacak ve daha sonra toplanacaktır. Bu işe yarar mı? Benim açıklamada belirtildiği gibi Parallel.ForEach öğesinin ilk döngüsü
bool firstLoop = true;
Parallel.ForEach(someList,
p=>
{
// do something here
if (firstLoop)
{
firstLoop = false;
// do something here for the first loop
}
});
Listede ilk öğe üzerinde mi yoksa yürütülen ilk döngüde mi olmalı? İterasyonların geri kalanı, bu ilk döngüde ne yapıldığına güveniyor mu? – Marc
Hayır, bu kesinlikle işe yaramıyor. Burada // bir şey yapmanın gecikmesi ilkLoop'un farklı iş parçacıkları tarafından farklı noktalarda (Parallel.ForEach nedeniyle) incelenmesine ve birden çok kez güncellenmesine neden olabilir. –
Özel kodunuzu, someList.Skip (1) 'üzerine paralel gitmeden önce' someList.First() 'üzerinde çalıştırmaya eğilimliydim. Basit tutun ve kendinizi bazı kötü senkronizasyon sorunları kaydedin. – spender