投稿機能を使用するための賛否両論を教えてください。いつ、なぜ、投稿を使用するのが好きでなければならないのですか。なぜ、それを使用したくないのですか?boost :: asio :: io_service - なぜポスト関数を使うのですか?
7
A
答えて
8
ポストは、現在のコンテキストではなく本質的にコールバックが発生したい場合に非常に便利です。理由は、次のものがあります
現在のコンテキストがロックを保持していると、あなたは彼らがリリースされた後に関数を呼び出すことにしたいです。これにより、デッドロックを起こすことなく、ロック自体を取得することができます。
コールスタックが非常に深い
かもしれない現在のスレッドは、他の方法で機能には不適切かもしれない、とポストは別のスレッドで関数をスケジュールするのに便利な方法です。
0
私はあなたがdispatch()
からpost()
を比較している推測しています。 dispatch()
はすぐにハンドラを呼び出す可能性があり、イベント駆動型プログラミングでは予期しない方法でキューに入れられたイベントに影響を及ぼす可能性があるため、一般にpost()
が安全です。また、コールスタックを小さく保ち、より予測可能な振る舞いを持つことにメリットがあります(dispatch()
may今実行するか、後で実行することができます)。
私はちょうど現在のio_service
イベント/ハンドラ/操作が終了した後にオブジェクトを削除するのに役立つことを発見した。post()
。
関連する問題
- 1. boost :: asio :: io_service占有タイマーとポストのキュー長
- 2. なぜboost :: asio :: io_service :: workを使用する必要がありますか?
- 3. boost :: asio :: io_serviceが例外をスローする
- 4. についてboost :: asio :: io_service :: run into multithread
- 5. 複数のリスニングソケットに同じboost :: asio :: io_serviceを使用できますか?
- 6. boost :: asio :: io_serviceはハンドラの順序を保持しますか?
- 7. boost :: asio :: io_serviceでメインのデータを取得します
- 8. Boost Asio io_service、クライアントからのメッセージを読む
- 9. stop()の後にboost :: asio :: io_serviceをクリアします。
- 10. 私がboost :: asio :: io_serive :: stop()を呼び出すと、boost :: asio :: io_service :: run()が終了しない
- 11. ブースト:: io_service内部バインド組成::ポスト機能
- 12. boost asio unix socket reuse
- 13. Boost :: asioとasync_read
- 14. Boost :: asio async_waitハンドラシグネチャ
- 15. boost :: asioで先物を使う
- 16. boost :: asio :: async_resolve問題
- 17. Boost :: Asio :: Ip :: Tcp :: Iostream質問
- 18. どのようにC++ 03のio_serviceにboost packaged_taskを投稿しますか?
- 19. なぜio_service :: workを使うべきですか?
- 20. .NET(Mono)にboost :: asioのようなものがありますか?
- 21. boost asioサーバーがclose boost :: socketの呼び出しでハングアップする
- 22. boost :: io_service poll_oneとrun_oneの違いは何ですか?
- 23. boost :: asio signal_set - ループに入ります
- 24. io_service、なぜ、どのように使用されていますか?
- 25. boost :: asioソケットとブロッキングについて
- 26. Boost Asioでのポストキューサイズの設定制限?
- 27. Boost :: asioこのような奇妙なコーディングスタイルは何ですか?
- 28. io_serviceでコールを実行せずにboost :: asio :: async_readを使用してタイムアウトを実装します。
- 29. asio/strand:タイマーの動作が異なるのはなぜですか?
- 30. ユニットテストとboost :: asio
これはあなたに興味があるかもしれません "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu
チップのおかげで!私は気づいていませんでした:-) – eve
@ArunMu:私はそのリンクに気付きました。私は拡張された答えを期待していました。 – eve