Tengo un código que actualmente estoy optimizando para concurrencia en arquitecturas multinúcleo. En una de mis clases, encontré un lazo anidado foreach
. Básicamente, el bucle externo itera a través de una matriz de objetos NetworkInterface
. El ciclo interno itera a través de las direcciones IP de las interfaces de red.Nested Parallel.ForEach Loops
Me hizo pensar, está teniendo Nidos anidados Parallel.ForEach
loops necesariamente una buena idea? Después de leer este artículo (Nested Parallel.ForEach Loops on the same list?), todavía no estoy seguro de qué se aplica en términos de eficiencia y diseño paralelo. Este ejemplo toma aproximadamente Parallel.Foreach
sentencias que se aplican a una lista donde ambos bucles realizan operaciones en esa lista.
En mi ejemplo, los bucles están haciendo cosas diferentes, por lo que, en caso de que:
- Use bucles anidados Parallel.ForEach?
- Usuario Parallel.ForEach en el bucle principal y abandone el bucle interno tal como está?
¿Puedes probar la solución usando el cronómetro? Entonces sabrás si vale la pena. – mike00