asioチャットサーバーの例を調べていました。私の質問は、io_service.run()
関数の使用法についてです。io_service.run()
関数のドキュメントには次のように書かれています。
run()関数は、すべての作業が終了してディスパッチするハンドラーがなくなるまで、またはio_serviceが停止するまでブロックします。複数のスレッドがrun()関数を呼び出して、io_serviceがハンドラーを実行できるスレッドのプールを設定する場合があります。プールで待機しているすべてのスレッドは同等であり、io_serviceはそれらのいずれかを選択してハンドラーを呼び出すことができます。run()関数は、reset()を呼び出した後でのみ完了すると、安全に再度呼び出すことができます。
run関数が返されると書かれており、返されるとネットワークスレッドは再度呼び出されるまで停止すると思います。それが本当なら、なぜ実行関数がループで呼び出されないのか、少なくとも独自のスレッドが与えられないのですか?機能は私にio_service.run()
はかなり謎です。