2011-07-31 15 views
7

投稿機能を使用するための賛否両論を教えてください。いつ、なぜ、投稿を使用するのが好きでなければならないのですか。なぜ、それを使用したくないのですか?boost :: asio :: io_service - なぜポスト関数を使うのですか?

+1

これはあなたに興味があるかもしれません "http://stackoverflow.com/questions/2326588/boost-asio-io-service-dispatch-vs-post" – Arunmu

+2

チップのおかげで!私は気づいていませんでした:-) – eve

+0

@ArunMu:私はそのリンクに気付きました。私は拡張された答えを期待していました。 – eve

答えて

8

ポストは、現在のコンテキストではなく本質的にコールバックが発生したい場合に非常に便利です。理由は、次のものがあります

  • 現在のコンテキストがロックを保持していると、あなたは彼らがリリースされた後に関数を呼び出すことにしたいです。これにより、デッドロックを起こすことなく、ロック自体を取得することができます。

  • コールスタックが非常に深い

  • かもしれない現在のスレッドは、他の方法で機能には不適切かもしれない、とポストは別のスレッドで関数をスケジュールするのに便利な方法です。

0

私はあなたがdispatch()からpost()を比較している推測しています。 dispatch()はすぐにハンドラを呼び出す可能性があり、イベント駆動型プログラミングでは予期しない方法でキューに入れられたイベントに影響を及ぼす可能性があるため、一般にpost()が安全です。また、コールスタックを小さく保ち、より予測可能な振る舞いを持つことにメリットがあります(dispatch()may今実行するか、後で実行することができます)。

私はちょうど現在のio_serviceイベント/ハンドラ/操作が終了した後にオブジェクトを削除するのに役立つことを発見した。post()

関連する問題