视频地址:https://www.bilibili.com/video/av68126222/

image.png

  1. while(1) {
  2. for(Fdx in (FdA~FdE)) {
  3. if(Fdx有数据) {
  4. Fdx;处理;
  5. }
  6. }
  7. }

判断有无数据是使用程序,效率比较低

select

image.png

image.png

优点:
将Fd的集合扔到了内核态,让内核来判断哪个有数据

缺点:

  1. 1024 bitmap 文件描述的大小有限
  2. FDset 不可重用,每次重新声明一个
  3. 用户态到内核态的切换任有个开销
  4. O(n)再次遍历

poll

image.png

epoll

image.png

image.png

image.png

视频参考代码与文章链接:
https://devarea.com/linux-io-multiplexing-select-vs-poll-vs-epoll/#.XYD0TygzaUl
https://notes.shichao.io/unp/ch6/
https://www.ulduzsoft.com/2014/01/select-poll-epoll-practical-difference-for-system-architects/