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