Tôi đã tìm kiếm thư viện đường dẫn thực thi có thể sử dụng lại được trong C++ (thư viện lịch biểu công việc?). Tôi không thể tìm thấy bất kỳ nội dung nào trong phạm vi Boost. Vì vậy, tôi cuối cùng đã phát hiện ra hai ứng cử viên:Thư viện C++ để xây dựng đường dẫn thực hiện
Tôi có thiếu bất kỳ ứng cử viên khác? Có ai sử dụng chúng không? Làm thế nào tốt là họ đối với song song io và đa luồng? Các thư viện đó dường như vẫn thiếu xử lý phụ thuộc. Ví dụ nó không có vẻ rõ ràng với tôi như thế nào người ta sẽ viết một cái gì đó như:
$ cat /dev/urandom | tr P Q | head -3
Trong trường hợp này rất đơn giản, đường ống được đi từ dưới lên, và cat
điểm dừng đầu tiên thực hiện khi head
quá trình dừng kéo.
Tuy nhiên tôi không thấy làm thế nào tôi có thể được hưởng lợi từ đa luồng và hoặc io song song trong trường hợp như:
$ cat /raid1/file1 /raid2/file2 | tr P Q > /tmp/file3
Không có cách nào cho tôi để nói: thực hiện tr
trên 7 đề khi 8 bộ vi xử lý có sẵn.
Tôi nghĩ bạn đang nhầm lẫn điều gì đó: đường ống không tự động có nghĩa là * bước cá nhân * trong các đường ống là paralleliseable (như ví dụ của bạn hiển thị), nó chỉ có nghĩa là tất cả (hoặc một số) bước có thể được thực hiện song song và thăm dò/đẩy dữ liệu giữa chúng. –
Tôi sẽ khám phá thêm google concurrency nữa. Nó chỉ được đề xuất để trở thành một phần của tiêu chuẩn C++. Thêm tại đây http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2013/n3534.html # Solution –