独立して読み書きする予定のJavaのブロッキングソケットを利用していますが、2つのオプションは、操作ごとに個別のスレッドを割り当てたり、setSoTimeout()
を使用してタイムアウトをポーリングすることです。ブロッキングソケットの使用を検討する際には、どのようなオプションがありますか?
2つの実装の間で選択することは、メモリー(スレッド)とCPU時間(ポーリング)とのトレードオフのようです。
スケジューラやコンテキスト切り替えに関連するスケーラビリティーの問題は、ポーリングに費やされたCPU時間を上回る可能性がある多数のスレッドのほか、パケットのサイズに応じて単一のスレッドから読み書きするときに発生する遅延受け取った。あるいは、適切に調整されていれば、いくつかのソケットのポーリングと組み合わせて、小さなスレッドのプールをスケールに使用できます。
この問題の対象外となるJavaのNIOを除いて、ブロッキングソケットを使用するためのオプションを正しく理解していますか?
同時接続数はいくつですか? – meriton