摘要: 转自:风吹过夏天的ChinaUnix博客 6.1 ET模式为什么要设置在非阻塞模式下工作 因为ET模式下的读写需要一直读或写直到出错(对于读,当读到的实际字节数小于请求字节数时就可以停止),而如果你的文件描述符如果不是非阻塞的,那这个一直读或一直写势必会在最后一次阻塞。这样就不能在阻塞在epoll_ 阅读全文
posted @ 2019-10-19 14:49 丶仰望星空 阅读(1029) 评论(1) 推荐(0) 编辑
摘要: 转自:风吹过夏天的ChinaUnix博客 5.1 ET模式下的读写 经过前面几节分析,我们可以知道,当epoll工作在ET模式下时,对于读操作,如果read一次没有读尽buffer中的数据,那么下次将得不到读就绪的通知,造成buffer中已有的数据无机会读出,除非有新的数据再次到达。对于写操作,主要 阅读全文
posted @ 2019-10-19 14:48 丶仰望星空 阅读(1192) 评论(0) 推荐(1) 编辑
摘要: 转自:风吹过夏天的ChinaUnix博客 首先,看程序四的例子。 l 程序四 #include <unistd.h> #include <iostream> #include <sys/epoll.h> using namespace std; int main(void) { int epfd,n 阅读全文
posted @ 2019-10-19 14:48 丶仰望星空 阅读(506) 评论(0) 推荐(0) 编辑
摘要: 转自:风吹过夏天的ChinaUnix博客 首先看程序一,这个程序想要实现的功能是当用户从控制台有任何输入操作时,输出”hello world!”。 l 程序一 运行结果: 程序一中对标准输入的监听使用ET模式,结果实现了我们想要的功能。那么实际原理是如何呢,我们将过程分析一下: (1) 当用户输入一 阅读全文
posted @ 2019-10-19 14:46 丶仰望星空 阅读(414) 评论(0) 推荐(0) 编辑
摘要: 转自:风吹过夏天的ChinaUnix博客 分析了ET和LT的实现方式,那么分析他们的触发方式就容易多了。我们通过实现分析知道LT模式下epoll_wait被唤醒可以通过两种方式(图中红线和蓝线),而ET模式只能通过一种方式(图中红线)。所以ET模式下能被唤醒的情况,LT模式下一定也能被唤醒。我们先来 阅读全文
posted @ 2019-10-19 14:45 丶仰望星空 阅读(559) 评论(0) 推荐(0) 编辑
摘要: 转自:风吹过夏天的ChinaUnix博客 1. ET模式实现分析 1.1 ET和LT的实现区别 首先给出下面一张图,这张图是从我之前的一篇博文——epoll实现分析中摘取并细化的。这张图对理解ET模式已经epoll的工作过程只管重要,当然我自己总结出来后也感觉有的小成就,在这里与大家分享。 注:上图 阅读全文
posted @ 2019-10-19 14:44 丶仰望星空 阅读(1227) 评论(0) 推荐(0) 编辑
摘要: 转自 风吹过夏天的ChinaUnix博客 1. 内核中提高I/O性能的新方法epoll epoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。要使用epoll只需要这三个系统调 用:epoll_create(2), epoll_ctl(2), epoll_wait(2)。当 阅读全文
posted @ 2019-10-19 14:42 丶仰望星空 阅读(1465) 评论(0) 推荐(0) 编辑