Estoy iterando sobre un vector de estructuras y procesando cada estructura de forma individual.
se ve algo como esto:¿Puede cada iteración de un for loop/for_each hacerse en paralelo? (C++ 11)
for_each(begin(data),end(data),DoTask);
//assume "data" is std::vector<DataT>
//assume DoTask is a function that takes a DataT by reference
El código es significativamente más lento porque doTask conecta a determinadas páginas web y analiza HTML.
¿Cuál sería la mejor manera de acelerar esto?
Mi objetivo es analizar múltiples DataTs al mismo tiempo.
Soy muy nuevo en el roscado, pero std::async y std::future parecen prometedores.
-1 el ejemplo será totalmente sincrónico ya que el destructor de 'std :: future' creado a partir de' std :: async' se bloqueará, además esto no ofrece ningún tratamiento, etc. En realidad debería ir con la biblioteca de concurrencia. – inf
@bamboon tienes razón, no había pensado en los destructores del 'futuro', buen punto. Mi comprensión de la biblioteca de threading no abarcó futuros cuando escribí esta respuesta. Lo he corregido para que sea correcto, creo. Y el OP no requirió protección laboral. –