programming parallelism parallel net library examples example c#-4.0 parallel-processing task-parallel-library

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(); }