小编xas*_*ask的帖子

使用select,epoll或kqueue提供大文件

Nginx使用epoll或其他多路复用技术(select)来处理多个客户端,即不像apache那样为每个请求生成一个新线程.

我尝试使用select在我自己的测试程序中复制相同的内容.我可以通过创建一个非阻塞套接字并使用select来决定服务哪个客户端来接受来自多个客户端的连接.我的程序只是将它们的数据回显给它们.它适用于小数据传输(每个客户端一些字节)

当我需要通过连接发送大文件到客户端时,会出现问题.由于我只有一个线程为所有客户端服务,直到我读完文件并将其写入套接字时,我无法恢复为其他客户端服务.

是否有针对此问题的已知解决方案,或者最好是为每个此类请求创建一个线程?

select epoll nginx kqueue

2
推荐指数
1
解决办法
7409
查看次数

标签 统计

epoll ×1

kqueue ×1

nginx ×1

select ×1