多路复用并发模型 -- epoll 监控事件 events EPOLLIN fd可读 EPOLLOUT fd可写 EPOLLPRI fd紧急数据可读 EPOLLERR fd发生错误 EPOLLHUP fd 被挂起 EPOLLONESHOT fd 只监控 1 次,监控完后自动删除 EPOLLLT ep ...
分类:
其他好文 时间:
2019-02-13 21:00:46
阅读次数:
188
EPOLLLT是系统默认模式,如果监听的socket链接,只要socket缓存有数据,就触发EPOLLIN,同样只要发送缓存有空间,都会有持续不间断的EPOLLOUT通知。 EPOLLET 在接收数据时, 如果有数据只会通知一次, 假如read时未读完数据,那么不会再有EPOLLIN的通知了, 直到 ...
分类:
其他好文 时间:
2017-09-21 20:59:39
阅读次数:
131
今天没事练习python的epoll,一开始写了个客户端: 发现服务端总是进入死循环收信息,甚是迷惑。后来修改了 str="ssf"处,修改为raw_input,发现程序正常运行,恍然醒悟,epoll默认 是LT模式,缓冲里的数据没读走,是每次都会触发的,因此,上面的代码修改epoll_fd.reg ...
分类:
编程语言 时间:
2016-10-10 16:27:42
阅读次数:
206
EPOLLLT——水平触发EPOLLET——边缘触发epoll有EPOLLLT和EPOLLET两种触发模式,LT是默认的模式,ET是“高速”模式。LT模式下,只要这个fd还有数据可读,每次 epoll_wait都会返回它的事件,提醒用户程序去操作,而在ET(边缘触发)模式中,它只会提示一次,直到下次...
分类:
其他好文 时间:
2014-08-06 17:57:51
阅读次数:
231
select系统调用不仅对描述符的数量有限制,而且在高并发的情况下,哪怕只有一个活跃的套接字,也要轮询全部的fd set,而epoll采用回调的事件通知机制,只需要处理活跃的套接字。比如Nginx服务器采用的就是epoll,下面这个程序(当接收到大于10B的数据时)展示了epoll在边沿触发和电平触发的不同表现,在edge-trigger模式下,需要我们的程序一次将这次的事情处理完成(比如把数据全...
分类:
其他好文 时间:
2014-07-12 23:43:37
阅读次数:
307