Muszę obsłużyć następujące scenerio: Mam 5 zadań ("A", "B", "C", "D", "E"), chciałbym je zrównoleglić, ale w odniesieniu do ich zależności. Muszą być wykonywane w takiej kolejności:Łańcuch zadań C++
A --> B --\
C ----------> E
D --------/
So „E” jest wykonywany, gdy wszystkie wcześniejsze nich są wykończone i „B” musi być wykonane po A. I tu jest moje pytanie. Czy są jakieś gotowe rozwiązania (STL, Boost)? Czy będę musiał wdrożyć go w oparciu o std :: thread?
Trzymaj się - Już to kiedyś widziałam? –
Jeśli zostanie zaakceptowana [N3558] (http://open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3558.pdf), myślę, że można to zrobić jako 'auto flow = std :: when_all (std :: async (A) .then (B), std :: async (C), std :: async (D)). then (std :: async (E)); '. – Xeo
@Xeo Bardzo ładne! Właściwie możesz prawie zrobić to samo z Boost.Thread w Boost 1.54.0 (który jest obecnie w wersji beta), ale będziesz musiał zaimplementować metodę when_all. Dostarcza on .then() (jest niekompletny, ale jeśli nie musisz zmieniać executora, powinien działać). – Klaim