Szukałem biblioteki potokowej do ponownego uruchamiania w C++ (biblioteka programu do planowania zadań?). Nie mogłem znaleźć niczego w ramach Boost. Więc w końcu dowiedział się dwóch kandydatów:Biblioteka C++ do budowania potoku wykonawczego
jestem brakuje żadnych innych kandydatów? Czy ktoś ich użył? Jak dobre są one w odniesieniu do równoległego io i wielowątkowości? W tych bibliotekach nadal brakuje obsługi zależności. Na przykład nie wydaje się dla mnie jasne, w jaki sposób można by napisać coś takiego:
$ cat /dev/urandom | tr P Q | head -3
W tym bardzo prostym przypadku, rurociąg podszedł dołu do góry, a pierwsze cat
przystanki wykonywania kiedy head
proces zatrzymuje ciągnięcia.
Jednak nie widzę w jaki sposób mogę korzystać z wielowątkowości i czy równoległą IO w przypadku takim jak:
$ cat /raid1/file1 /raid2/file2 | tr P Q > /tmp/file3
Nie ma dla mnie sposób, aby powiedzieć: wykonać tr
na 7 wątki gdy 8 procesorów dostępny.
myślę, że jesteś mylące coś: rurociągi nie oznacza automatycznie, że poszczególne etapy * * w rurociągu są paralleliseable (jak Twój przykład pokazuje), to po prostu oznacza, że wszystkie (lub niektóre) kroki mogą być wykonywane równolegle, a dane sondowania/wypychania między sobą. –
Chciałbym dalej eksplorować biblioteki współdziałania google. Zaproponowano, aby stać się częścią standardu C++. Więcej tutaj http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3534.html # Solution –