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 这个函数之后。 |