四个Pipeline脚本式与声明式语法差异
该结构体指定了要异步操作的套接字描述符,操作过程中用到的缓冲,其中aio_sigevent告诉AIO在IO操作完成时,应该指向什么操作。 常见的异步IO相关函数如下: INT AIO_READ(STRUCT AIOCB *AIOCBP) 请求异步读操作,该函数将aiocbp指向的缓冲区描述的I/O请求排队。 注意:aio_read的aiocbp中一定要设置偏移量 在传统的非异步read操作中,偏移量是在文件描述符上下文进行维护的,对于每个操作,偏移量都需要更新,以便后续的操作可以对下一块数据进行寻址。 而对于异步read操作来说,可以同时执行很多异步IO read操作,所以这里需要的指明处理的文件的偏移量aiocbp->aio_offset和异步读取的内容的长度aiocbp->aio_nbytes。 aio_read调用后,文件偏移量变为未设置。 INT AIO_WRITE(STRUCT AIOCB *AIOCBP) 请求异步写操作,该函数将aiocbp指向的缓冲区描述的I/O请求排队。 aio_write不一定要设置偏移量 如果打开的文件,设置了O_APPEND选项,那么偏移量就会被忽略,数据会被附加到文件的末尾;如果未设置O_APPEND,那么从aiocbp->aio_offset开始写入数据,而不考虑文件的偏移量。 SSIZE_T AIO_RETURN(STRUCT AIOCB *AIOCBP) 获取完成的异步请求的返回状态。 由于IO异步化了,需要有专门的函数来获取异步处理的状态。 aio_return的返回值即相当于read或write等系统调用的返回值。如果出错,则返回-1,并正确设置errno。 可能的响应值:
只有在aio_error调用返回EINPROGRESS之外的值之后,才可以调用这个函数,并且只允许调用一次。 INT AIO_ERROR(CONST STRUCT AIOCB *AIOCBP) 检查异步请求的状态,可能的响应值:
AIO_SUSPEND (编辑:唐山站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |