私はブーストプログラミングの新人で、io_service::work
を使用する理由を探していましたが、わかりません。いくつかのテストで私はそれを取り除きました。はです。なぜio_service :: workを使うべきですか?
5
A
答えて
9
io_service::run()
は、実行する非同期操作がある限り、操作を実行します。保留中の非同期操作(またはハンドラーが呼び出されている)がない場合はいつでも、run()
呼び出しが戻ります。
しかし、run()
コールはすべての作業が完了するまで終了せず、終了するように明示的に指示されているio_service
があることが好ましい設計があります。それはio_service::work
のために使用されます。 work
オブジェクトを作成すると(通常はヒープとshared_ptrで行います)、io_serviceは常に保留中のものがあるとみなし、run()
メソッドは返されません。サービスを終了できるようにしたら(通常はシャットダウン時に)、私は作業オブジェクトを破棄します。
6
io_service::work
は実際にあなたがio_service
からwork
を追加している、あなたはソケットでの作業や非同期読み込みを開始しているとき、たとえば、io_service
のインスタンスに投稿することができ、すべての作品の基底クラスです。だから、通常は直接work
を使用することはありませんが、これには例外が1つあります:
io_service::run
はすぐに行うには多くの作業がないよう返すので、いくつかの生産者と消費者のスレッドを持つアプリケーションを検討し、生産者は時折作品を制作しますio_service::post
でコンシューマスレッドにポストしますが、すべての作業が終了した場合はio_service::run
が返され、コンシューマスレッドが停止する可能性があります。io_service
をビジー状態に保つために任意の作業が必要な場合は、io_service::work
を直接使用できます。
関連する問題
- 1. なぜboost :: asio :: io_service :: workを使用する必要がありますか?
- 2. boost :: asio :: io_service - なぜポスト関数を使うのですか?
- 3. ブーストにio_serviceが必要なのはなぜですか?
- 4. io_service、なぜ、どのように使用されていますか?
- 5. なぜ@propertyデコレータをPythonで使うべきですか?
- 6. なぜPythonでクラスメソッドを使うべきですか?
- 7. なぜjustifyContent:space-between work?
- 8. なぜdupメソッドを使うべきですか?
- 9. Obj-C、なぜAvfoundationを使うべきですか?
- 10. Zendフレームワーク - なぜデータマッパー/ Db_Table_Rowを使うべきですか?
- 11. ブートストラップのカスタマイズ:なぜ私はLESSを使うべきですか?
- 12. Laravel:なぜミドルウェアを使うべきですか?
- 13. なぜこのコードにポインターを使うべきですか?
- 14. なぜasync/await vs Promisesを使うべきですか?
- 15. なぜAssertクラスメソッドを使うべきですか?
- 16. display:blockを使うべきか、display:flexを使うべきですか?
- 17. virtualenvとは何ですか、なぜそれを使うべきですか?
- 18. なぜNHibernateセッションの上でUnit of Workパターンを使用するのですか?
- 19. メールを送信するのになぜActiveMQを使うべきですか?
- 20. 「My Work」チームエクスプローラウィジェットがVisual Studio 2015 Professionalで使用できないのはなぜですか?
- 21. なぜx86とx86_x64で 'rdtsc'を別々に使うべきですか?
- 22. なぜ私は衝突検出でQuadTreeを使うべきですか
- 23. なぜQUOTENAME関数を使用すべきですか?
- 24. なぜandroid Logクラスを使用すべきですか?
- 25. GWT.createは何を意味し、なぜそれを使うべきですか?
- 26. setUpClassはいつ使うべきですか?__init__を使うべきですか?
- 27. git rebase -i:/^major workはなぜですか?
- 28. なぜ私はC++/CLIのタイプinstadのC++ネイティブを使うべきですか?
- 29. なぜjqueryの代わりにreactjsを使うべきですか?
- 30. なぜIPC/Simple websocketの代わりにgRPCを使うべきですか?
reset()のように破棄しますか? – lucastamoios
通常、shared_ptrを使用して動作する場合、私はshared_ptrに対して 'reset()'を呼び出します。 –