我在一个小项目中工作,我需要从一个源(文件、套接字等)读取一些东西,在许多客户端中处理和写入(每个新客户端都不同)。
我正在使用 select 来多路复用 I/O。
如果我可以读取源,我将存储在内部缓冲区中,处理并写入许多输出缓冲区(每个客户端一个)。如果我可以写,我只写缓冲区。听起来不错。
但是我如何才能为大量用户扩展它呢?我正在考虑使用 fork 并设置每个进程的 x 连接。我真的不知道这是一个好方法还是更好的预分叉或使用不同的端口并使用一些负载平衡但是现在我不清楚我该如何处理 fork + select
例如,如果我在每个进程中使用 100 个客户端,则在第 101 个客户端中,我将分叉,但内存中仍然有旧的 select 和 100 个套接字客户端。我可以清理“旧”选择并开始一个新选择,但这很奇怪。我不知道我的策略是否足够好。