Tôi muốn cho ai đó cho tôi biết những ưu điểm (và khuyết điểm) về việc sử dụng chức năng đăng bài. Tại sao và khi nào tôi nên sử dụng bài đăng và tại sao/khi nào tôi không nên sử dụng nó?boost :: asio :: io_service - tại sao sử dụng chức năng đăng bài?
Trả lời
Bài đăng rất hữu ích khi bạn muốn gọi lại xảy ra chủ yếu ngay bây giờ, nhưng không phải trong ngữ cảnh hiện tại. Các lý do có thể bao gồm:
Ngữ cảnh hiện tại đang giữ khóa và bạn muốn hàm được gọi sau khi chúng được giải phóng. Điều này sẽ cho phép các chức năng để có được những khóa chính nó mà không gây ra một bế tắc.
Cuộc gọi chồng có thể rất sâu
Các chủ đề hiện tại có thể không phù hợp cho các chức năng trong một số cách khác, và sau là một cách thuận tiện để lập kế hoạch các chức năng trong thread khác.
Tôi đoán bạn đang so sánh post()
tới dispatch()
. Nói chung, post()
an toàn hơn vì dispatch()
có thể gọi trình xử lý ngay lập tức và có rủi ro trong lập trình hướng sự kiện khiến bạn ảnh hưởng đến các sự kiện xếp hàng theo những cách không mong muốn. Cũng có công đức trong việc giữ ngăn xếp cuộc gọi nhỏ và có hành vi dự đoán được hơn (dispatch()
có thể chạy ngay bây giờ hoặc có thể chạy sau).
Tôi chỉ tìm thấy post()
hữu ích cho việc xóa đối tượng chỉ sau khi kết thúc sự kiện/xử lý/hoạt động io_service
hiện tại.
- 1. boost :: asio :: io_service chiếm hàng đợi độ dài cho bộ đếm thời gian và bài viết
- 2. Ai sử dụng Boost ASIO?
- 3. Tại sao mã Boost ASIO này không hoạt động với ứng dụng khách python này?
- 4. Tại sao bài đăng không thành công trong bài kiểm tra chức năng Rails của tôi?
- 5. chọn chức năng tăng :: asio
- 6. boost asio deadline_timer
- 7. boost :: asio over SocketCAN
- 8. Không tăng :: asio :: io_service bảo quản thứ tự xử lý?
- 9. Khi nào tôi phải sử dụng boost :: asio: strand
- 10. io_service, tại sao và nó được sử dụng như thế nào?
- 11. Tôi có thể sử dụng cùng một tăng :: asio :: io_service cho nhiều ổ cắm nghe không?
- 12. Sử dụng boost :: asio thread pool cho các mục đích chung
- 13. Tại sao tôi nên sử dụng io_service :: work?
- 14. Boost :: Asio đọc/ghi hoạt động
- 15. boost :: asio, lỗi không đồng bộ đọc
- 16. Boost Asio tcp :: resolver: không tìm thấy dịch vụ
- 17. Boost :: asio, Shared Memory và Interprocess Communication
- 18. Boost :: asio async_wait chữ ký handler
- 19. boost :: asio, hồ bơi chủ đề và theo dõi luồng
- 20. boost :: asio :: async_write, ghi dữ liệu lớn hơn 65536 byte
- 21. cách sử dụng asio với các tệp thiết bị
- 22. Có "Bộ mô tả tập tin sai" khi sử dụng tăng :: asio và boost :: thread
- 23. Làm thế nào để bạn đăng một packaged_task tăng lên một io_service trong C++ 03?
- 24. Ổ cắm AF_NETLINK (netlink) sử dụng boost :: asio
- 25. Cảnh báo C4512 lạ. Tại sao?
- 26. boost :: asio và Active Object
- 27. tại sao typeof (/./) == 'chức năng' được sử dụng trong gạch
- 28. Asio mà không cần Boost
- 29. boost :: asio UDP phát sóng
- 30. boost :: asio socket async_ * strand
Điều này có thể khiến bạn quan tâm "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu
Cảm ơn bạn! Tôi đã không biết :-) – eve
@ArunMu: Tôi đã nhận thấy rằng liên kết trước đây, tôi đã hy vọng cho một câu trả lời mở rộng. – eve