首页 > 编程知识 正文

epoll底层原理,单点登录原理

时间:2023-05-04 04:11:42 阅读:113629 作者:1638

流IO操作块

可以进行IO操作的内核对象

文件夹、管道、插座……

流入口:文件描述符(软盘)。

对流读写操作均可称为IO操作。

当流中没有数据、读或流中写满了数据、写时,我们的IO操作会发生一种称为阻塞现象的现象

分块

非交通堵塞

阻塞等待:清空大脑可以安心入睡。 (不占用CPU宝贵的时间片)非阻塞,忙轮询(浪费时间、浪费电话费、浪费快递时间;CPU、浪费系统资源) ) ) ) ) ) ) )。

解决堵车等死的方法堵车等死的缺点

方法1 :无阻塞,忙轮询

方法选择

select代理人很懒,她只能告诉你快递到了,但需要问一次快递员是谁到了

方法epoll (主角出场) ) )。

epoll的特点优势:与select、poll相同,但添加了I/O复用技术

不需要只关心“活跃”链接,遍历所有描述符集合

可以处理大量链接请求(系统可以打开的文件数) )。

epollapiintepoll _ create (intsize; intepoll_CTL(intepfd、int op、int fd、struct epoll_event *event ); struct epoll _ event { _ _ uint 32 _ t events; /* epoll事件*/epoll_data_t data; /*用户传递的数据*/}/*** @param epfd是用epoll_create创建的epoll句柄* @param op,用于控制epoll监视器描述符的行为* * epoll _ cttop 表示的EPOLLET_CTL_del(epfd删除一个软盘(** @param fd必须侦听的文件描述符(**/**events: ) EPOLLET、EPOLLOUT、EPOLLET uint32_t u32; uint64_t u64; } epoll_data_t; struct epoll_event new_event; new _ event.events=epoll in; new_event.data.fd=5; epoll_CTL(epfd,EPOLL_CTL_ADD,5,new_event ); 图解:

触发模式水平触发和边缘触发

水平触发

水平触发器的优点:水平触发器的主要特点是,如果用户正在接收epoll事件,则在内核中有事件时进行复制

提供用户状态事件,但如果用户只处理一次,剩下的未处理的将是

epoll_wait将再次返回此事件。

因此,如果用户不永远处理此事件,则每次都会发生从内核到用户的事件复制

虽然会消耗贝、性能,但水平触发器比较安全,至少事件在用户处理之前不会丢弃

完了

边缘触发

与水平触发器相反,当事件到达内核时,边缘触发器仅通知用户一次

今后不会通知用户是否会处理。 这将减少复制过程并提高性能

相对而言,如果用户疏忽忘记处理,事件可能会消失。

有关select poll epoll之间的差异,请参见此博客https://blog.csdn.net/QQ _ 35433716/article/details/82588619

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。