Linux五种IO模型
发布时间:2020-12-14 00:36:06 所属栏目:Linux 来源:网络整理
导读:目录 1. IO模型 2. 阻塞式IO 3. 非阻塞式IO 1. IO模型 Linux下可用的IO模型有5种,分别是: 阻塞式IO 非阻塞式IO IO复用 信号驱动式IO(SIGIO) 异步IO(Posix的aio_系列函数) 其中, 除了异步IO,其余都属于同步IO模型。 在这5种模型中,我们目前只关注前3
目录
1. IO模型Linux下可用的IO模型有5种,分别是:
其中,除了异步IO,其余都属于同步IO模型。 2. 阻塞式IO阻塞式IO是Linux中最基本、最常用的IO模型,指的是可能会使进程永远阻塞的函数,一般表现为:
在默认情况下,所有的套接字都是阻塞的,我们以UDP套接字为例来展示阻塞式IO模型,如下图所示。 进程调用recvfrom接收数据,但由于内核还未准备好,进程就会阻塞;直到内核准备好数据,recvfrom完成数据复制工作,进程才能解除阻塞状态。 3. 非阻塞式IO顾名思义,非阻塞式IO不会使调用进程或线程永远阻塞,具体表现为:如果IO操作不能完成,则立即出错返回,调用进程或线程继续向下执行。 对于一个给定的描述符,有两种将其指定为非阻塞式IO的方法:
#include <fcntl.h> int fcntl(int fd,int cmd,... /* int arg */);
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |