Linux epoll两种触发模式

您所在的位置:网站首页 dw工作区两种模式 Linux epoll两种触发模式

Linux epoll两种触发模式

2024-07-16 21:18| 来源: 网络整理| 查看: 265

epoll 两种触发模式

epoll有两种触发模式,分别为LT水平触发,ET边沿触发。

event.events = EPOLLIN | EPOLLET;//ET 边沿触发模式 event.events = EPOLLIN; //默认 LT触发模式

epoll的两种触发模式会在epoll_wait()函数处对读取缓冲区有不用的处理方式。 1.LT水平触发(默认):当缓存区的数据没有被一次性读取完,那么epoll_wait()函数会非阻塞的进行再次读取,直至读写缓存区的数据被读取完成。 2.ET边沿触发:每当进行一次读取操作后,epoll_wait()函数就会堵塞,直至下一次缓存区数据的写入,才会在此的触发读取操作。 区别:对于LT模式,保证了对数据的完整性读取,但是对一些不重要的不必要的数据来说,会加大内核对epoll_wait()函数的调用,加大开销。对于ET模式,可以在程序中设定读取的关键信息段,从而来减轻内核的开销,效率而言相比LT来说较高。但是值得注意的是读取缓存区需要及时将多余的信息清理掉,保证下一次读取的可靠性。

两种触发模式简单示例:

1.LT水平触发:每次读取的数据为写入的一半。

#include #include #include #include #include #include #include #define MAXSIZELINE 10 int main(void) { int pfd[2];//创建管道准备 int efd,i; pid_t pid; char buf[MAXSIZELINE]; char ch = '1'; pipe(pfd);//创建管道 pid = fork(); if(pid == 0)//子进程 写 { close(pfd[0]);//关闭 读 while(1) { for(i = 0; i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3