Skip to content

Latest commit

 

History

History
66 lines (42 loc) · 2.38 KB

README.md

File metadata and controls

66 lines (42 loc) · 2.38 KB

select和epoll的区别

plan

任务目标

问题:关于 epoll 和 select 的区别,哪些说法是正确的?(多选)
A. epoll 和 select 都是 I/O 多路复用的技术,都可以实现同时监听多个 I/O 事件的状态。
B. epoll 相比 select 效率更高,主要是基于其操作系统支持的I/O事件通知机制,而 select 是基于轮询机制。
C. epoll 支持水平触发和边沿触发两种模式。
D. select 能并行支持 I/O 比较小,且无法修改。

出题人:阿里巴巴出题专家:寈峰/阿里技术专家
参考答案:A,B,C
【延伸】那在高并发的访问下,epoll使用那一种触发方式要高效些?当使用边缘触发的时候要注意些什么东西?

延伸(最后添加的):

et模式(边缘触发)效率会高,因为只会触发一次,每个操作尽量做完,
读,只要还有数据就继续读;写,只要还有空间,还有未写数据,就继续写。

其实对lt和et的了解并不多,只能从网上搜索一些答案

任务分析

  1. select和epoll都是网络i/o复用的一种,都是系统调用
  2. 本题主要考题范围是对多路复用的了解和多路复用的几种实现方式

课题

  1. 熟悉网络i/o复用相关的概念(多路复用/事件循环/io模型)
  2. 熟悉select/pselelct/poll/epoll
  3. 熟悉其差异

课题的解决方案

  • 这些问题都可以从wiki和书本上找到答案

Do

确定行动措施

  1. 了解多路复用, 详见yb-post issue[#48]
  2. 了解事件循环
  3. 了解io模型和各个系统调用函数
  4. 回答问题

Check

这个属于多看就能回答的问题,select支持io复用,所以不存在并发小的问题, 至少是可以上千个socket的。

Adjust

本次问题的答案来至wiki/书本/网络。每种途径都只包含了一部分答案, 组合起来就是完整的答案。所以学习过程中,多读书是很有必要的。

总结

2019.11.01

本次解决问题从很早就开始了,只是看文档花了很多时间(正好也有时间来了解), 有一点需要注意:wiki是一个很好的知识库,以后需要多多善用, 书本上的知识也很详细,不过不会涵盖所有,所以网络上查找资料也是非常有必要的。

先了解基础和环境,再去了解具体的技术实现,非常有必要。