Nginx 使用 epoll 或其他多路复用技术(选择)来处理多个客户端,即它不像 apache 那样为每个请求生成一个新线程。
我尝试使用 select 在我自己的测试程序中复制相同的内容。我可以通过创建非阻塞套接字并使用 select 来决定要服务的客户端来接受来自多个客户端的连接。我的程序只会将他们的数据回显给他们。它适用于小数据传输(每个客户端一些字节)
当我需要通过与客户端的连接发送大文件时,就会出现问题。由于我只有一个线程为所有客户端提供服务,直到我完成读取文件并将其写入套接字时,我无法继续为其他客户端提供服务。
这个问题是否有已知的解决方案,或者最好为每个这样的请求创建一个线程?