ブーストASIOを使用してマルチスレッドtcpサーバを作成していますか?私はチュートリアルを読んで、いくつかの例を見て、私の理解が正しいことを確認したいだけです。ブーストアシオ付きマルチスレッドサーバ
サーバーは、複数のクライアントからの接続要求を受け付けます。すべてのスレッドがio_service::run()
を呼び出す
io_service::run()
を呼び出す単一io_service
を、スレッド・プール」サーバが使用する
- :
私の理解では、次の通りです。
io_service::run()
への呼び出しは鎖の中になく、ergoコンプリートハンドラは同時に実行できます。- 要求スレッドのいずれかが選択されて到着すると、その読出しハンドラは、スレッドのいずれかが要求を処理完了すると第二のスレッド
- にリードハンドラを起動、
- 別の要求が到着すると呼ぶことにします別のスレッドでもその要求の処理を終了
strand
- の中から、
async_write
を呼び出し、それはまた、ザ・がio_service
に書き込み - が
strand
経由で連載されているストランド内から、async_write
を呼び出し、エルゴ彼らは、スレッドセーフです。 - 書き込み操作が完了すると、スレッドが正しい私の理解ですか?このコールは
strand
により保護されていないと、スレッドが要求
を処理するために使用されますasync_read()
これは現在書かれているように、本当に答えることのできない質問です。あなたの理解に間違いはありません。あなたは特定の問題を抱えていますか?もしそうなら、いくつかのコードを投稿できますか? –
私はちょうどその前に進んで実装する前に私の憶測や理解が正しいことを確認したかったのです。あなたはおそらくそれをやったと思う、ありがとう。私は、オストでASIOの経験が限られていましたが、これは怒りの中で初めて使用する予定です。 – mark
@markこのサーバーを書いていますか?私は、マルチスレッド非同期サーバーのいくつかの例を見てきましたが、それは私にとってはオーバーヘッドです。あなたはあなたを見せてもらえますか? – Alex