什么是IO多路复用
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 107
Author 回答者: shfshanyue
假设你的服务器要同时处理 100 个 socket
连接
- 开一个线程,挨个处理。这就没法处理并发了
- 开100个线程,分别处理。这么多的线程在内核态频频进进出出也很消耗性能
- 开一个线程,去检查
socket
是否就绪,如果就绪则再开一个线程去处理。这就是IO多路复用了
select
、poll
、epoll
是三中典型的IO多路复用的系统调用,但实际上现在 epoll
使用的最多。当你使用 strace
查看 nodejs
某个服务的系统调用时,将会发现 nodejs
就是使用了 epoll
Author 回答者: zhangxiaokun
不会开新的线程去处理,轮训所有注册的socket,就绪就去处理