极客时间返利平台,你可以在上边通过山月的链接购买课程,并添加我的微信 (shanyue94) 领取返现。
每天晚上九点 B站讲解前端工程化直播,并解答相关问题。

# 什么是 IO 多路复用

Issue

欢迎在 Gtihub Issue 中回答此问题: Issue 107 (opens new window)

假设你的服务器要同时处理 100 个 socket 连接

  1. 开一个线程,挨个处理。这就没法处理并发了
  2. 开 100 个线程,分别处理。这么多的线程在内核态频频进进出出也很消耗性能
  3. 开一个线程,去检查 socket 是否就绪,如果就绪则再开一个线程去处理。这就是 IO 多路复用了

selectpollepoll 是三中典型的 IO 多路复用的系统调用,但实际上现在 epoll 使用的最多。当你使用 strace 查看 nodejs 某个服务的系统调用时,将会发现 nodejs 就是使用了 epoll

不会开新的线程去处理,轮训所有注册的 socket,就绪就去处理

Last Updated: 11/27/2021, 10:11:48 AM