アプリケーション レベルのプロトコルが UDP 経由で実装されているとします。クライアントのタイムアウトが必要なため、サーバーは通信する各クライアントの状態を保持する必要があります。
また、使用されていると仮定しますselect
。
マルチスレッドサーバーを実装するのは常に最善ですか? サーバーのタイムアウトが発生する場合、リンクリストも同じことを行うと思います
time=Earliest Timeout of a client- CurrentTime
。リンクリストは、新しいスレッドを作成するオーバーヘッドを回避しながら、クライアントの状態を保持するのと同じ機能を持ちます (ただし、サーバーがクライアント固有のタイムアウトを維持するためにいくらか複雑になります)。マルチスレッドが選択された場合、それ以降は、新しいクライアントに対して新しいソケットを呼び出すのが最善ですか? これにより、システム リソースのオーバーヘッドが発生します。しかし、デフォルトのサーバーソケット(
bind
サーバーのウェルノウンポートを使用)は、バッファーを取得したため、同じことを行うと思います(まあ、スケーラブルな数のクライアントには十分な長さではないかもしれません..)
ありがとう!