startnew run programming parallel net examples example asp c# parallel-processing task-parallel-library

programming - task.run c#



AsParallel.ForAll vs Parallel.ForEach (2)

Tiene la opción de ordenar los elementos con AsParallel (). AsOrdered (). Ordenar en Parallel.ForEach no está fuera de la caja, necesitamos hacerlo.

¿Hay alguna diferencia entre los fragmentos de código a continuación. ¿Entonces qué?

myList.AsParallel().ForAll(i => { /*DO SOMETHING*/ });

y

Parallel.ForEach(mylist, i => { /*DO SOMETHING*/ });

¿El hilo principal esperará a que se completen todos los hilos secundarios? En una aplicación MVC, si estoy haciendo un procesamiento paralelo en la acción de mi controlador, qué sucede con los subprocesos secundarios una vez que se completa el subproceso principal. ¿Se abortarán o se completarán incluso después de que se complete el hilo principal?


Parallel.ForEach() está diseñado exactamente para este tipo de código.

Por otro lado, ForAll() está destinado a usarse al final de una consulta PLINQ (posiblemente compleja).

Por eso, creo que Parallel.ForEach() es la mejor opción aquí.

En ambos casos, el subproceso actual se usará para realizar los cálculos (junto con algunos subprocesos del grupo de subprocesos) y el método se devolverá solo después de que se haya completado todo el procesamiento.