2009-05-26 5 views
2

私はすでにboost :: asioのドキュメントを読むのに2日を無駄にしました そして、私はブロックを実装する方法がまだ分かりませんselect()は、 (ブーストフレームワークを使用して)1つのスレッドのみを使用するソケット。 boost :: asioの非同期関数がすぐに戻るので、async_readのいずれかが終了するまでメインスレッドにいくつかの待機関数を入れる必要があります。 これは時間がかかると思われますが、実際にはパフォーマンス要件によって制限されています。boost :: asio内でPOSIX select()ベースの動作を実装する方法

答えて

2

io_serviceオブジェクトは、select関数の抽象です。あなたのソケットを設定し、メインスレッドからio_service::runメンバ関数を呼び出します。 io_service::run関数は、io_serviceインスタンスに関連するすべての作業が完了するまでブロックします。非同期ハンドラでは、さらに多くの作業をスケジュールできます。

またio_service::run_oneio_service::poll、またはio_service::poll_oneio_service::runの代わりに使用することができます。

関連する問題