Select和epoll的区别

谈谈对I/O多路复用的理解,Select和Epoll的区别
首先I/O多路复用是用线程监听多个文件描述符,或连接事件,一旦发现一个或多个就绪的文件描述符便触发阻塞唤醒,让应用程序直接读写。
①Select基于轮询,遍历所有文件描述符,而epoll只遍历就绪的文件描述符,要比select快很多
②select监听集合受操作系统限制,而epoll不受限制
③在处理大量文件描述符时,随着文件描述符的增多,select性能逐渐下降,而epoll性能保持稳定
④在多线程场景下,select需将监听集合传递给每个线程,而epoll在一个线程中处理多个文件描述符,省下了线程切换和数据复制的开销。
总的来说epoll比select好,但在文件描述符较少和需要多平台支持的场景下用select更好。
全部评论
兄弟,试试光伏电池行业~
点赞 回复 分享
发布于 2023-10-06 12:18 浙江
最后总结咋select更好了?
点赞 回复 分享
发布于 2023-09-16 09:30 广东

相关推荐

03-16 20:28
已编辑
吉林大学 Java
聊天成长式非常规面经1h,聊嗨了。非常规面试,但感觉很棒,面试官全程微笑。感觉和面试官都是梦到什么说什么[隐去了一些个人经历的深追问题]1.讲一下从小到大的个人经历,为什么选择计算机这个行业呢?2.在大学有哪些规划呢?你对未来的职业发展有哪些想法?未来你想走怎样的路呢?3.讲一下自己的两个项目的时间节点,完成度4.这个自研项目需求点,解决了生活中哪些痛点,你觉得这是实际需求还是伪需求,具体的需求点在你实际落地体现在哪里呢?5.有调研过市面上有哪些相似的项目嘛,或者说真正有名的有哪些6.在做这个项目过程遇到了哪些困难7.视频转音频,转文字,AI分析是怎么实现的8.FFmpeg了解底层的一些机制嘛9.具体讲讲分片上传断点续传的实现,追问为什么先落盘再记账到Redis10.关于保障数据不丢失,你觉得各种中间件的持久化有哪些相通的机制11.你有具体关注过哪些开源项目嘛12.你平时是怎么进行AI coding的13.最近有用过OpenClaw嘛?有哪些应用的场景呢14.讲讲你在Calude Code和Codex的使用差别,你觉得应该怎么去分别使用呢15.你觉得未来AI的一个发展趋势?反问1️⃣有什么能够提高的确或者有哪些地方不足。[面试官说取决于我的需求和目标,想进大厂就多背八股算法等等,想进创业小公司方向就保持自己的敏锐性]2️⃣如果有后续流程会去做哪些业务。以及后续面试的流程。[说是各司其职的公司,大家都会沿着自己的目标去奋斗。流程忘说了]
小牛炒肉:发现一有个没见过的其他项目,面试官就完全不问点评了,四场面试询问次数为0
查看15道真题和解析
点赞 评论 收藏
分享
03-25 20:11
暨南大学
没问八股,问了些项目相关的+ 如何提高项目并发性可用性+ 如何支持多个用户的群聊需求+ 根据项目和专业:国密和国外的算法区别是什么+ 项目会被中间人攻击吗,如何防止或者实施+ 平常会怎么使用AI Coding+ CPP如何管理内存,如何排查和处理内存泄露手撕说白了就是求一个有向无环图的拓扑排序,但是鼠鼠代码能力为零直接拉了坨大的来了个 $O(n^2)$ 解。```cpp#include <iostream>#include <map>#include <vector>using namespace std;int list[256];map<string, vector<string>> components = {{"A", {"B", "C"}},{"D", {"B", "C"}},{"E", {"F", "B"}},{"B", {"L", "F"}},{"L", {}},{"N", {}},{"F", {}},{"C", {"B"}},{"P", {"N"}},{"Q", {"P"}}};vector<string>  solution(map<string, vector<string>> components) {vector<string> res;while(1) {for(auto &item: components) {auto index = int(item.first[0]);if(list[index] != -1) continue;for(int i = 0; i < item.second.size(); i++) {auto index_ = item.second[i][0];if(list[int(index_)]==-1) goto end;}list[index] = 1;res.push_back(item.first);if (res.size()==components.size()) {return res;}end:}}}int main() {for(int i = 0; i < 256; i++) {list[i] = -1;}auto res = solution(components);for(auto i : res) {cout << i << " ";}}```
查看6道真题和解析
点赞 评论 收藏
分享
评论
6
35
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务