多线程编程指南

等待 I/O 操作完成

通过调用 aiowait(3AIO),可以等待未完成的异步 I/O 操作完成。aiowait() 将返回指向 aio_result_t 结构(随原始 aioread(3AIO) 或原始 aiowrite(3) 调用一同提供)的指针。

此时,aio_result_t 将包含 read(2)write(2) ?òa?|^ao?H?§,前提是要调用其中一个函数而不是异步版本。如果 read()write() 成功,则 aio_return 包含已读取或写入的字节数。如果 read()write() 不成功,则 aio_return 为 -1,且 aio_errno 包含错误代码。

aiowait() 将使用 timeout 参数,该参数指示调用程序将等待的时间。此处的 NULL 指针表示调用程序将无限期等下去。指向包含零值的结构的指针表示调用程序根本不会等待。

您可能会启动异步 I/O 操作,执行某项工作,然后调用 aiowait() 以等待请求完成。或者,可以使用 SIGIO 在操作完成时以异步方式得到通知。

最后,可通过调用 aiocancel() 来取消暂挂的异步 I/O 操作。此例程是使用结果区域地址作为参数来进行调用的。此结果区域标识哪项操作将被取消。