while(1) {
for(Fdx in (FdA~FdE)) {
if(Fdx有数据) {
读Fdx;处理;
}
}
}
判断有无数据是使用程序,效率比较低
select
优点:
将Fd的集合扔到了内核态,让内核来判断哪个有数据
缺点:
- 1024 bitmap 文件描述的大小有限
- FDset 不可重用,每次重新声明一个
- 用户态到内核态的切换任有个开销
- O(n)再次遍历
poll
epoll
视频参考代码与文章链接:
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/