WindowsクライアントにBoost::ASIOバージョン1.52.0を使用しています。サーバーからのすべての受信メッセージを処理するためのスレッドと、サーバーへのすべての送信メッセージを処理するための別の専用スレッドを専用にできるようにしたいと思います。現在、両方のスレッドに同じio_serviceオブジェクトを使用しています。私が心配しているのは、io_service::run()メソッドが呼び出されると、送信メッセージを処理しているスレッドが、一部の受信メッセージ呼び出しを処理するようにスケジュールされる可能性があることです。その逆も同様です。だから、私の質問-これは可能ですか?もしそうなら、2番目のio_serviceオブジェクトを使用して問題を解決しますか?スレッドごとに1つですか?これを設計するためのより良い方法はありますか?読み取りハンドラーと書き込みハンドラーの両方に複数のスレッドを使用しないようにしています。
もう1つ確認したいのは、2つ以上async_readsを同時に実行できる場合は、コードをシングルスレッド化するためにロックを使用する必要があることを読みました。同様にasync_writes。an async_readが。と同時に実行できる場合にもロックを使用するasync_write必要がありますか、それともスレッドセーフである必要がありますか?
最後の質問-非同期メソッド-、、、async_connectおよびasync_readすべてasync_writeは、ワーカースレッドがio_servicerunメソッドを呼び出す前に、別のスレッドから呼び出すことができますか?