Parallel.ForEach en C#

Parallel.ForEach permite procesar en paralelo todos los elementos de una colección. Divide automáticamente el trabajo en múltiples hilos para aprovechar la concurrencia y acelerar el procesamiento en colecciones grandes.

Ejemplo básico

var numeros = Enumerable.Range(1, 10);

Parallel.ForEach(numeros, n => {
    Console.WriteLine($"Número: {n}, Hilo: {Thread.CurrentThread.ManagedThreadId}");
});
    

Cada elemento se procesa potencialmente en un hilo diferente, acelerando tareas independientes.

Consideraciones importantes

Las acciones deben ser independientes o manejar sincronización adecuadamente. Acceder a recursos compartidos requiere mecanismos seguros como locks o colecciones concurrentes.

Buenas Prácticas

Usa Parallel.ForEach para cargas pesadas en colecciones grandes. Controla el grado de paralelismo si la carga del sistema es alta. Evalúa si la sobrecarga de sincronización es justificable.

Ver también

Documentación oficial de Microsoft

Ver más en Microsoft Docs