select
如上图所说select poll是轮训方式来查看所有监听的socket,这里的意思是说调用了select poll后就死循环轮训所有要监听的socket集吗,那这样的话不是很蠢效率很低吗?这里epoll是说是用回调方式来检测就绪事件,意思是说epoll调用以后进程阻塞也也不做轮训 当某个socket有数据时通知调用epoll的进程唤醒吗?
select
如上图所说select poll是轮训方式来查看所有监听的socket,这里的意思是说调用了select poll后就死循环轮训所有要监听的socket集吗,那这样的话不是很蠢效率很低吗?这里epoll是说是用回调方式来检测就绪事件,意思是说epoll调用以后进程阻塞也也不做轮训 当某个socket有数据时通知调用epoll的进程唤醒吗?
15 回答8.4k 阅读
2 回答2.4k 阅读✓ 已解决
1 回答1.8k 阅读✓ 已解决
2 回答3.4k 阅读
1 回答1.1k 阅读✓ 已解决
3 回答898 阅读
1 回答778 阅读
对,是死循环。以
select
为例,源码的关键部分是:所以说
epoll
效率比select
高啊。P.S. 其实效率低主要倒不是因为死循环,而是频繁的内核态和用户态切换。