特定の実装の詳細について (まだ) 尋ねているわけではなく、何が起こっているのかについての一般的な概要を尋ねているだけです。ソケットの背後にある基本的な概念を理解しており、プロセス全体を明確にする必要があります。私の(おそらく非常に間違った)理解は現在これです:
ソケットは、(独自のスレッドで) 接続したいクライアントを常にリッスンしています。接続が発生すると、別のスレッドを生成して接続プロセスを実行するイベントが発生します。接続プロセス中に、クライアントにはサーバーと通信するための独自のソケットが割り当てられます。次に、サーバーはクライアントからのデータを待ち、データが到着するとイベントが発生し、ストリームからデータをバッファーに読み取るスレッドが生成されます。
私の質問は次のとおりです。
私の理解はどのように外れていますか?
各クライアント ソケットは、データをリッスンするために独自のスレッドを必要としますか?
データはどのように正しいクライアント ソケットにルーティングされますか? これは、TCP/UDP/カーネルの内臓によって処理されますか?
このスレッド化された環境では、通常、どのような種類のデータが共有されていますか?また、競合のポイントは何ですか?
明確化と追加の説明をいただければ幸いです。
編集:
どのデータが一般的に共有されているか、および競合のポイントに関する質問に関しては、これは接続の受け入れとデータの送受信の一般的なプロセスに関する質問ではなく、実装の詳細であることに気付きました。いくつかの実装 (SuperSocket と Kayak) を調べたところ、セッション キャッシュや再利用可能なバッファー プールなどの同期がいくつかあることに気付きました。この質問は無視して構いません。皆様のフィードバックに感謝いたします。