私は、1 つのソース (ファイル、ソケットなど) から何かを読み取り、多くのクライアントで処理および書き込みを行う必要がある小さなプロジェクトで作業しています (新しいクライアントごとに異なります)。
select を使用して I/O を多重化しています。
ソースを読み取れる場合は、内部バッファーに格納し、処理して、多くの出力バッファー (クライアントごとに 1 つ) に書き込みます。can_write の場合は、バッファを書き込むだけです。いいですね。
しかし、これを多数のユーザーに合わせて拡張するにはどうすればよいでしょうか? フォークを使用して、プロセスごとにx接続のようなものを設定することを考えていました。それが良い方法なのか、それともプリフォークまたは別のポートで作業してロードバランスを使用する方が良いのかは本当にわかりませんが、今のところ、フォーク+選択をどのように処理できるかは明確ではありません
たとえば、プロセスごとに 100 クライアントで作業する場合、101 番目のクライアントでフォークしますが、メモリには古い選択クライアントと 100 ソケット クライアントが残っています。「古い」選択を消去して新しい選択を開始できますが、奇妙です。自分の戦略で十分かどうかはわかりません。