Sto iterando su un vettore di strutture ed elaborando ciascuna struttura singolarmente.
Sembra qualcosa di simile a questo:Ogni iterazione di un ciclo for/for_each può essere eseguita in parallelo? (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
Il codice è molto lento perché doTask collega a particolari siti web e analizza HTML.
Quale sarebbe il modo migliore per velocizzarlo?
Il mio obiettivo è analizzare più DataT allo stesso tempo.
Sono molto nuovo al threading, ma std::async e std::future sembrano promettenti.
-1 l'esempio sarà totalmente sincrono in quanto il distruttore di 'std :: future' creato da' std :: async' verrà bloccato, inoltre questo non offre workstealing ecc. In realtà dovrebbe andare con la libreria di concorrenza. – inf
@bamboon hai ragione, non avevo però dei distruttori del 'futuro's, buon punto. La mia comprensione della libreria di threading non comprendeva i future quando ho scritto questa risposta. L'ho modificato per essere corretto, penso. E l'OP non ha richiesto il workstealing. –