http://img600.imageshack.us/img600/3567/graphicrepresentation.png
私は正しい方法で推論していますか?もしそうなら、上のスキームのように、 I / O Completion Portsがどのように機能するかを誰かに教えてもらえますか? MMORPG 用のサーバーのような高性能サーバーの作成について学ぶ前に、それがどのように機能するのかを確認したいと思います。
http://img600.imageshack.us/img600/3567/graphicrepresentation.png
私は正しい方法で推論していますか?もしそうなら、上のスキームのように、 I / O Completion Portsがどのように機能するかを誰かに教えてもらえますか? MMORPG 用のサーバーのような高性能サーバーの作成について学ぶ前に、それがどのように機能するのかを確認したいと思います。
これについてはドブス博士の記事があります。
IOCP を使用すると、すべての send および recv 呼び出しはスレッドのプールによって処理されます (通常は小さなプールで問題ありません)。そのため、send/recv を含む 1 つのボックスを描画し、その上に 3 つの赤い点、その下に 10,000 個の青い点を配置します。
IOCP を使用すると、一連の重複した要求を発行できます。これらの要求が完了すると、それらはキュー (IOCP) に配置され、そのキューにサービスを提供するスレッドはそれらを削除して処理できます。したがって、10,000 の接続がすべて 1 つの読み取りを保留している場合、各クライアントからデータが到着すると、読み取り完了が IOCP に送られます。スレッドが起動され、完了を処理します。スレッドは、より多くの重複した読み取りを発行し、おそらく重複した書き込みも発行する可能性があります。ほとんどの場合、オーバーラップされた書き込みがいつ完了するかは気にしません (気にする場合を除きます ;) )。したがって、完了処理は、操作ごとのデータ (つまり、クライアントに送信したばかりのデータ) を解放し、使用量を減らすだけで構成されます。つながりを頼りに…
私の無料の IOCP サーバー フレームワークページからリンクされている記事では、これについてもう少し説明しています。