Si consideri il seguente esempio di codice, che crea una collezione numerabile di numeri interi e lo elabora in parallelo:sicurezza Discussione di rendimento rendimento con Parallel.ForEach()
using System.Collections.Generic;
using System.Threading.Tasks;
public class Program
{
public static void Main()
{
Parallel.ForEach(CreateItems(100), item => ProcessItem(item));
}
private static IEnumerable<int> CreateItems(int count)
{
for (int i = 0; i < count; i++)
{
yield return i;
}
}
private static void ProcessItem(int item)
{
// Do something
}
}
E 'garantito che i thread di lavoro generati da Parallel.ForEach()
Ognuno di essi ha un oggetto diverso o un meccanismo di blocco attorno all'incremento e alla restituzione di i
richiesto?
Basta usare Enumerable.Range lì. –
@newStackExchangeInstance: Penso che sia solo un esempio iteratore. – Dennis
@newStackExchangeInstance: E come 'Enumerable.Range()' mi aiuta a elaborare un 'IEnumerable' in parallelo? –