Como puede adivinar, el índice del bucle Parallel.For() salta de un valor a otro. ¿Cómo puedo calcular la cantidad de trabajo realizado?Actualización de progreso en Parallel.For() loops
Gracias.
Como puede adivinar, el índice del bucle Parallel.For() salta de un valor a otro. ¿Cómo puedo calcular la cantidad de trabajo realizado?Actualización de progreso en Parallel.For() loops
Gracias.
Al mantener un contador en lugar de buscar en el índice? Por ejemplo:
int counter = 0;
Parallel.For(4, 500, i => {
// TODO: something useful...
int progress = Interlocked.Increment(ref counter);
Console.WriteLine("{0}: {1}", progress, i);
});
(el uso Interlocked
es esencial para evitar que la raza condiciones de acceso a counter
)
int progress = 0;
Parallel.For(from, to, i => {
// do the job
Interlocked.Increment(ref progress);
});
ahora el avance real es (float)(to - from)/progress
Y [aquí] (https://gist.github.com/0xorial/8b82594e8f2b96beae77) es el mismo envuelto. – ironic