Estoy un poco confundido acerca de Parallel.ForEach
.
¿Qué es Parallel.ForEach
y qué hace exactamente?
No haga referencia a ningún enlace de MSDN.
Aquí hay un ejemplo simple:
string[] lines = File.ReadAllLines(txtProxyListPath.Text);
List<string> list_lines = new List<string>(lines);
foreach (string line in list_lines)
{
//My Stuff
}
¿Cómo puedo reescribir este ejemplo con Parallel.ForEach
?
c#
multithreading
.net-4.0
parallel.foreach
SilverLight
fuente
fuente
Parallel
clase y el uso de PLINQ.foreach
. La diferencia es que la versión paralela puede hacer muchas "acciones" al mismo tiempo. En la mayoría de los casos (dependiendo de qué computadora está ejecutando el código, y qué tan ocupado está, y otras cosas) será más rápido, y esa es la ventaja más importante. Tenga en cuenta que cuando lo hace en paralelo, no puede saber en qué orden se procesan los artículos. Con un habitual (en serie)foreach
, tiene la garantía de quelines[0]
es lo primero, luegolines[1]
, y así sucesivamente.Respuestas:
fuente
List<T>
;)Bucle Foreach:
Paralelo para cada uno:
El siguiente ejemplo demuestra claramente la diferencia entre el bucle foreach tradicional y
Parallel.ForEach () Ejemplo
Salida
Usando Parallel.ForEach ejemplo
fuente
Esto hará que las líneas se analicen en paralelo, dentro del bucle. Si desea una introducción más detallada y menos "orientada a la referencia" a la clase Paralelo, escribí una serie sobre el TPL que incluye una sección sobre Parallel.ForEach .
fuente
Para archivos grandes, use el siguiente código (tiene menos memoria)
fuente
Estas líneas me funcionaron.
fuente