打印

异步IO

[复制链接]
216|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
无幻|  楼主 | 2018-8-22 10:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1.简介:英文缩写 AIOlinux中常用的是异步IO,它能在等待 IO 请求时不占用 CPU,而异步IO 的意义在于有些时候 IO 请求可能与 其他的进程产生交叠。AIO 基本思想是允许进程发起很多 I/O 操作,而不用阻塞或等待任何操作完成。稍后或在接收到 I/O 操作完成的通知时,进程再检索 I/O 操作的结果。AID 对IO 的异步阻塞和 select 对通知事件的阻塞功能类似。异步阻塞 IO,允许同时发起多个传输单元,每个传输的所有信息都被保存到 aiocb(AIO I/O Control Block) 结构体中。这个结构体包含了有关传输的所有信息,以及为数据准备的用户缓冲区。在产生 I/O 通知(称为完成)时,aiocb 结构就被用来惟一标识所完成的 I/O 操作。

2. 有关 AIO 的函数:aio_read :请求对一个有效的文件描述符(可以是一个文件、套接字、管道)进行异步的读

int aio_read( struct aiocb *aiocbp );

立即返回,返回值:

0,成功

-1,失败,有error值

aio_write:请求异步的写

int aio_write( struct aiocb *aiocbp );

立即返回,返回值:

0,成功

-1,失败,有error值

aio_error:确定请求的状态

int aio_error( struct aiocb *aiocbp );

返回值:

EINPROGRESS,请求尚未完成。

ECANCELLED,请求被应用程序取消。

-1,发生了错误,具体错误原因由 errno 记录。

aio_return:查询函数状态

因为异步 IO 的返回状态不是立即返回的,因此要用这个函数来查询

ssize_t aio_return( struct aiocb *aiocbp );

此函数一般在 aio_error 这个函数之后。

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

431

主题

436

帖子

0

粉丝