ソケットプログラミングでは、リスニングソケットを作成し、接続するクライアントごとに、クライアントの要求を処理するために使用できる通常のストリームソケットを取得します。OSは、バックグラウンドで着信接続のキューを管理します。
2つのプロセスが同じポートに同時にバインドすることはできません-とにかく、デフォルトで。
プロセスの複数のインスタンスを起動する方法(よく知られているOS、特にWindowsの場合)があり、それらがすべてソケットにバインドされ、キューを効果的に共有する方法があるかどうか疑問に思っています。次に、各プロセスインスタンスをシングルスレッド化できます。新しい接続を受け入れるときにブロックするだけです。クライアントが接続すると、アイドルプロセスインスタンスの1つがそのクライアントを受け入れます。
これにより、各プロセスが非常にシンプルなシングルスレッド実装を持ち、明示的な共有メモリを介さない限り何も共有せず、ユーザーはより多くのインスタンスを起動して処理帯域幅を調整できます。
そのような機能はありますか?
編集:「なぜスレッドを使用しないのですか?」明らかにスレッドはオプションです。ただし、1つのプロセスに複数のスレッドがある場合、すべてのオブジェクトは共有可能であり、オブジェクトが共有されないようにするか、一度に1つのスレッドからしか見えないようにするか、完全に不変であり、最も人気のある言語となるように細心の注意を払う必要があります。ランタイムには、この複雑さを管理するための組み込みサポートがありません。
少数の同一のワーカープロセスを開始することで、デフォルトが共有されない並行システムが得られ、正確でスケーラブルな実装を構築することがはるかに容易になります。