# 什么是IO多路复用

Issue

欢迎在 Issue 中交流与讨论: Issue 107

Author

回答者: shfshanyue

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

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

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

扫码关注公众号全栈成长之路,并发送

即可在关注期间无限制浏览本站全部文章内容

你也可以在文章关于回复公众号扫码解锁全站的技术实现中获得解锁代码,永久解锁本站全部文章

Last Updated: 12/28/2019, 11:45:49 AM