質問

ASIO学ぶしようとすると、と私は、ウェブサイトからの例を以下のよ。

なぜio_service必要とされ、それが正確に何をするのでしょうか?なぜ私は、非同期操作を実行しながら、ほぼすべての他の機能にそれを送信する必要がありますか、なぜそれが「結合」最初の後に自分自身を「作成」することはできません。

役に立ちましたか?

解決

ASIOのio_serviceは非同期機能を操作するためファシリテーターです。非同期操作の準備ができたら、それは戻ってあなたを呼び出すためにio_serviceの実行中のスレッドのいずれかを使用しています。そのようなスレッドが存在しない場合、それはあなたを呼び出すために独自の内部のスレッドを使用しています。

の操作を含むキューと考えてください。これは、実行時にこれらの操作は、唯一そのrun()またはrun_once()メソッドを呼び出したスレッド上で、そうれることを保証し、またはソケットを扱うときと非同期IO、その雌ねじます。

あなたはすべての人にそれを渡す必要があります理由は、誰かが準備ができて非同期操作を待つ必要があるということは基本的であり、それは離れて抽象化して、独自のドキュメントio_serviceに述べたように、プラットフォームのオペレーティングシステムのI / OサービスへのASIOのリンクです例えばkqueueなど/dev/pool/epollselect()、それらの上で動作する方法として自分の非同期通知機能、、。

操作がシリアル化されるので、

主に私は、明示的なロックの必要性を排除し、システムのいくつかの部分からのコールバックを分離し、それらが同じスレッドで動作することを確認するio_serviceを使用して終了します。これは、非同期アプリケーションのための非常に強力なイディオムです。

あなたは<のhref = "http://www.boost.org/doc/libs/1_65_1/doc/html/boost_asio/overview/core/basics.html" のrel = "nofollowをnoreferrerを見てみることができます「>コアのドキュメントでは、より良いio_serviceが必要な理由の感覚とを取得するし、それが何をするか。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top