Có, tài liệu được tạo mới và tài liệu lập lịch chưa được ghi lại.
Trình lên lịch trong rxcpp v2 dựa trên lịch trình và cấu trúc công nhân mà RxJava sử dụng (Eric Meijer đã tham gia) Các tài liệu cho RxJava sẽ có giải thích cho người lập lịch và nhân viên. rxcpp thêm lịch, điều phối và điều phối viên.
scheduler
sở hữu dòng thời gian được hiển thị theo phương pháp now()
. scheduler
cũng là một nhà máy cho worker
s trong dòng thời gian đó. vì một người lên lịch sở hữu một dòng thời gian nên có thể xây dựng các bộ lập lịch thời gian đi lại. bộ lập lịch ảo là cơ sở cho trình lập lịch biểu thử nghiệm sử dụng công cụ này để thực hiện các phép thử nhiều giây hoàn thành bằng ms.
worker
sở hữu một hàng đợi đang chờ xử lý schedulable
s cho dòng thời gian và có thời gian tồn tại. khi thời gian cho một số schedulable
đạt đến số schedulable
được chạy. Hàng đợi duy trì thứ tự chèn để khi N schedulable
s có cùng thời gian đích chúng được chạy theo thứ tự mà chúng được chèn vào hàng đợi. worker
đảm bảo rằng mỗi schedulable
hoàn tất trước khi bắt đầu schedulable
tiếp theo. khi tuổi thọ của worker
bị hủy đăng ký, tất cả các số đang chờ xử lý schedulable
sẽ bị hủy.
schedulable
sở hữu một chức năng và có nhân viên và cả đời. khi tuổi thọ của schedulable
bị hủy đăng ký, chức năng schedulable
sẽ không được gọi. các schedulable
được chuyển đến chức năng và cho phép chức năng lên lịch lại chính nó hoặc lên lịch một cái gì đó khác trên cùng một công nhân.
Các khái niệm mới là phối hợp và điều phối viên. Tôi đã thêm những điều này để đơn giản hóa việc triển khai toán tử và giới thiệu tính năng trả tiền để sử dụng trong việc triển khai toán tử. Cụ thể, trong Rx.NET và RxJava, các toán tử sử dụng các hoạt động nguyên tử và đồng bộ hóa nguyên thủy để điều phối các thông điệp từ nhiều luồng ngay cả khi tất cả các luồng trên cùng một luồng (như các sự kiện UI). Các điều phối identity_. . .
trong rxcpp được sử dụng theo mặc định và không có phí. Các điều phối syncronize_. . .
và observe_on_. . .
sử dụng mutex và hàng đợi-trên-một-công nhân tương ứng, để xen kẽ nhiều luồng một cách an toàn.
coordination
là một nhà máy cho coordinator
s và có scheduler
.
coordinator
có worker
, và là một nhà máy phối hợp observable
s, subscriber
s và schedulable
chức năng.
Tất cả các toán tử sử dụng nhiều luồng hoặc xử lý kịp thời (ngay cả subscribe_on và observ_on) đều có tham số phối hợp, chứ không phải lên lịch.
Dưới đây là một số chức năng được cung cấp sẽ tạo ra sự phối hợp bằng cách sử dụng một trình lên lịch cụ thể.
- identity_immediate()
- identity_current_thread()
- identity_same_worker (công nhân w)
- serialize_event_loop()
- serialize_new_thread()
- serialize_same_worker (công nhân w)
- observe_on_event_loop()
- observ_on_new_thread()
Hiện chưa có bộ lập lịch nhóm. Trình lập lịch biểu của luồng yêu cầu sử dụng sự phụ thuộc vào việc triển khai luồng-pool vì tôi không muốn viết một thread-pool. Kế hoạch của tôi là tạo một bộ lập lịch cho các cửa sổ thread-pool và apple thread-pool và tăng asio executor pool .. Một câu hỏi cần trả lời là liệu các cấu trúc nền tảng cụ thể này có nên tồn tại trong repo rxcpp hay không.
Đóng góp, ý kiến và ý tưởng được hoan nghênh!
Cảm ơn nhận xét, tôi đã có thể đặt một bộ lập lịch đơn giản với nhau (với bộ tính năng rất hạn chế), nhưng nó đủ để đáp ứng nhu cầu cơ bản của tôi bây giờ. Tôi đã làm theo hướng dẫn về Scheduler/Worker impl trong Java (4 phần): http://akarnokd.blogspot.de/2015/05/schedulers-part-1.html sau đó ánh xạ kiến thức của tôi tới C++ world - nó đã hoạt động nên tôi giới thiệu phương pháp này trước khi có thêm tài liệu hoàn chỉnh – jskierbi
Âm thanh tuyệt vời! Tôi rất thích nhìn thấy nó :) –