2011-07-31 25 views
7

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?

+1

Đ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

+2

Cảm ơn bạn! Tôi đã không biết :-) – eve

+0

@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

Trả lời

8

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.

0

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.

Các vấn đề liên quan