¿Alguien sabe si hay alguna sobrecarga que me permita especificar un tamaño de paso en un bucle Parallel.For? Las muestras en C# o VB.Net serían geniales.Paralelo.Para el tamaño de paso
Gracias, Gonzalo
¿Alguien sabe si hay alguna sobrecarga que me permita especificar un tamaño de paso en un bucle Parallel.For? Las muestras en C# o VB.Net serían geniales.Paralelo.Para el tamaño de paso
Gracias, Gonzalo
Google de "paso enumerable.range" y que debe ser capaz de venir sobre implementaciones alternativas de Enumerable.Range que proporcionan intervalos escalonados. A continuación, sólo se puede hacer un
Parallel.ForEach(BetterEnumerable.SteppedRange(fromInclusive, toExclusive, step), ...)
Si Google no está funcionando, la aplicación debe ser algo como esto:
public static class BetterEnumerable {
public static IEnumerable<int> SteppedRange(int fromInclusive, int toExclusive, int step) {
for (var i = fromInclusive; i < toExclusive; i += step) {
yield return i;
}
}
}
Alternativamente, si "yield return" da a uno la jeebies heebie, siempre puede cree una lista vieja normal en el lugar:
var list = new List<int>();
for (int i = fromInclusive; i < toExclusive; i += step) {
list.Add(i);
}
Parallel.ForEach(list, ...);
Esto se debe traducir fácilmente a VB si eso es un requisito.
Gracias Dax. ¿Sería demasiado trabajo adicional si estoy tratando de hacer esto en VB.Net donde no hay retorno de rendimiento? – Gonzalo
Sin experiencia VB, pero debería poder usar un bucle for para hacer una lista de enteros con los enteros que necesita, y luego usar 'Parallel.ForEach' con esa lista. –
@Gonzalo: [async CTP] (http://www.microsoft.com/download/en/details.aspx?id=22388) habilita el uso de iteradores en VB.NET. – jason