c#-4.0 - parallelism - vb net parallel programming examples
Parallel.ForEach loop con BlockingCollection.GetConsumableEnumerable (1)
Usar Parallel.ForEach
con BlockingCollection
es algo problemático, como descubrí recientemente. Se puede hacer que funcione, pero necesita un pequeño esfuerzo adicional.
Stephen Toub tiene una excelente publicación en el blog y si descargas el proyecto "Extras de la extensión paralela" ( también disponible en NuGet ) encontrarás un código listo para ayudarte.
¿Por qué parallel.ForEach loop sale con OperationCancelledException, mientras usa GetConsumableEnumerable?
//outside the function
static BlockingCollection<double> _collection = new BlockingCollection<double>();
var t = Task.Factory.StartNew(Producer);
Parallel.ForEach(_collection.GetConsumingEnumerable(),item => Console.WriteLine("Processed {0}", item));
Console.WriteLine("FINISHED processing");
public static void Producer()
{
var data = Enumerable.Range(1, 1000);
foreach (var i in data)
{
_collection.Add(i);
Console.WriteLine("Added {0}",i);
}
Console.WriteLine("Finished adding");
_collection.CompleteAdding();
}