关于IO多路复用的疑问
老师,
1.epoll/poll/select的使用都会用到死循环,会阻塞当前进程。如果我还有其它逻辑,写在这个死循环里也不太合适吧。
是不是课堂上为了演示,做项目的时候有别的写法?
2. epoll是属于异步执行吗?
15
收起
正在回答
1回答
第一个问题
Io多路复用要实现的功能是用单线程监听多个文件的io事件,所以写死循环是没问题的,其他萝莉音在其他线程里做。
第二个问题
epoll可以算异步,但是本质上更像是同步死等一段时间,如果这一段时间没有io发生,那就做其他事。
异步是指程序执行流程,一个任务a做一半不等待它的结果,立即去做别的任务b,某一时刻任务a的结果出来了,再去处理a的结果;
常见的异步情况有:
异步通信,发送方发出指令却不等待应答,继续发其他指令,收到应答就立马开始解析;
异步写数据到文件,调用write写文件,要写得数据在write调用结束后可能被系统缓存了,这时程序已经在做其他事了;
Io多路复用要实现的功能是用单线程监听多个文件的io事件,所以写死循环是没问题的,其他萝莉音在其他线程里做。
第二个问题
epoll可以算异步,但是本质上更像是同步死等一段时间,如果这一段时间没有io发生,那就做其他事。
异步是指程序执行流程,一个任务a做一半不等待它的结果,立即去做别的任务b,某一时刻任务a的结果出来了,再去处理a的结果;
常见的异步情况有:
异步通信,发送方发出指令却不等待应答,继续发其他指令,收到应答就立马开始解析;
异步写数据到文件,调用write写文件,要写得数据在write调用结束后可能被系统缓存了,这时程序已经在做其他事了;
物联网/嵌入式工程师
- 参与学习 394 人
- 提交作业 23320 份
- 解答问题 1185 个
行业热门,政策风口,人才缺口极大,现在入场时机正好! 上千人检验,数轮迭代的硬核知识体系,软硬件通吃 保姆式教学+简历指导+1V1模拟面试+3次内推,助力轻松就业!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星