Devo gestire il seguente scenerio: Ho 5 compiti ("A", "B", "C", "D", "E"), mi piacerebbe parallelizzarli ma rispetto alle loro dipendenze. Devono essere eseguiti in un tale ordine:Catena di compiti C++
A --> B --\
C ----------> E
D --------/
Quindi, "E" viene eseguita quando tutti i precedenti sono finiti e "B" deve essere eseguita dopo A. E qui è la mia domanda. Esistono soluzioni pronte per l'uso (STL, Boost)? O dovrò implementarlo basandosi su std :: thread?
Aspetta, l'ho visto da qualche parte prima? –
Se [N3558] (http://open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3558.pdf) è accettato, penso che questo potrebbe essere fatto come 'auto flow = std :: when_all (std :: async (A) .then (B), std :: async (C), std :: async (D)). then (std :: async (E)); '. – Xeo
@Xeo Molto bello! In realtà, puoi quasi fare lo stesso con Boost.Thread in Boost 1.54.0 (che è attualmente in beta), ma dovrai implementare il when_all yourself. Fornisce il .then() (è incompleto ma se non hai bisogno di cambiare executor dovrebbe funzionare). – Klaim