一、epoll_create 创建一个epoll接口,size参数和select不同,不是fd+1? 需要注意的是:当创建好epoll后,它就会占用一个fd值,在linux /proc/id/fd/能看到这个fd的,所以使用完epoll后,必须close()关闭,否则可能导致耗尽fd。 二、epol ...
分类:
其他好文 时间:
2018-02-21 23:58:51
阅读次数:
320
本文目录:1. 基础2. I/O模型2.1 Blocking I/O模型2.2 Non-Blocking I/O模型2.3 I/O Multiplexing模型2.4 Signal-driven I/O模型2.5 Asynchronous I/O模型2.6 同步IO和异步IO、阻塞和非阻塞的区分3. ...
分类:
其他好文 时间:
2017-10-04 00:24:29
阅读次数:
262
参考资料 http://www.man7.org/linux/man-pages/man7/epoll.7.html ...
分类:
其他好文 时间:
2017-08-20 21:06:16
阅读次数:
187
By francis_haoAug 5,2017 APUE讲多路转接的章节介绍了select、pselect和poll函数。而epoll是linux内核在2.5.44引入的。在glibc 2.3.2添加了支持。 epoll_create – 打开一个epoll文件描述符 epoll_ctl – 控制... ...
分类:
其他好文 时间:
2017-08-06 00:14:02
阅读次数:
343
在Linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时 ...
分类:
其他好文 时间:
2017-07-09 17:17:58
阅读次数:
176
epoll 是为处理大量句柄而改进的poll,在UDT中也有支持。UDT使用了内核提供的epoll,主要是epoll_create,epoll_wait,epoll_ctl,UDT定义了CEPollDesc这个结构来管理epoll的描述符和套接字。 struct CEPollDesc { int m ...
分类:
其他好文 时间:
2017-06-01 23:36:17
阅读次数:
317
首先介绍下epoll的基本原理,网上有很多版本,这里选择一个个人觉得相对清晰的讲解(详情见reference): 首先我们来定义流的概念,一个流可以是文件,socket,pipe等等可以进行I/O操作的内核对象。 不管是文件,还是套接字,还是管道,我们都可以把他们看作流。 之后我们来讨论I/O的操作 ...
分类:
其他好文 时间:
2017-05-28 00:53:26
阅读次数:
264
socket也是io的一种,阻塞的socket操作包括: 输入:recv(), recvfrom(),缓冲区为空时阻塞 输出:send(), sendto(),缓冲区为空时阻塞 接受:accept(),无连接时阻塞 连接:connect(),无响应时阻塞,对TCP连接而言会阻塞一个服务器往返时间 解 ...
分类:
系统相关 时间:
2017-05-18 21:34:51
阅读次数:
212
考虑如下情况(实际一般不会做,这里只是举个例子): 在主线程中创建一个socket、绑定到本地端口并监听 在主线程中创建一个epoll实例(epoll_create(2)) 将监听socket添加到epoll中(epoll_ctl(2)) 创建多个子线程,每个子线程都共享步骤2里创建的同一个epol ...
分类:
其他好文 时间:
2017-05-05 01:05:15
阅读次数:
281
Linux下谈论I/O复用、高并发,一定会说到epoll。因为epoll是最有效的I/O复用方式。 epoll的使用非常简单,总共3个API: Linux2.6.8之后,size参数已被忽略,为了向前兼容,size大于0即可。 op有3种取值:EPOLL_CTL_ADD、EPOLL_CTL_MOD、 ...
分类:
其他好文 时间:
2017-02-21 21:59:02
阅读次数:
222