主要包含以下几种:
IO多路复用的实现主要有select,poll和epoll模式。
文件描述符:
在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。 三者的区别:
在基于select的 I/O 复用模型中,会用到 Select,这个函数也会使进程阻塞,但是和阻塞 I/O 所不同的是这两 个函数可以同时对多个 I/O 操作。而且可以同时对多个读操作,多个写操作的 I/O 函数进行检测,直到有数据 可读或可写时,才真正调用 I/O 操作函数。
select/poll处理流程:
epoll的处理流程:
epoll 是线程安全的。 epoll 不仅告诉你sock组里面的数据,还会告诉你具体哪个sock连接有数据,不用进程 独自轮询查找。
在实际的网络 IO 的应用中,需要的是系统内核的支持以及编程语言的支持。现在大多数系统内核都会支持阻 塞 IO、非阻塞 IO 和 IO 多路复用,但像信号驱动 IO、异步 IO,只有高版本的 Linux 系统内核才会支持。
IO 多路复用应用特点:
IO 多路复用更适合高并发的场景,可以用较少的进程(线程)处理较多的 socket 的 IO 请求,但使用难度比较高。
与 IO 多路复用相比,阻塞 IO 每处理一个 socket 的 IO 请求都会阻塞进程(线程),但使用难度较低。
RPC 调用在大多数的情况下,是一个高并发调用的场景, 在 RPC 框架的实现中,一般会选择 IO 多路复用的方式。
阅读量:2016
点赞量:0
收藏量:0