Ожидать завершения асинхронных операций ввода/вывода
#include <aio.h>int aio_suspend( const struct aiocb *const list[],int nent,const struct timespec *timeout );
NULL
, которые функция aio_suspend() игнорирует.NULL
или указатель на структуру struct timespec, которая определяет максимальный промежуток времени ожидания завершения операции.libc
Функция aio_suspend() приостанавливает вызывающий поток до тех пор, пока хотя бы одна из асинхронных операций ввода/вывода из аргумента list не завершится, либо пока сигнал не прервет функцию, либо, если timeout не равен NULL
, до тех пор, пока не пройдет временной интервал, переданный в timeout.
Если какая-либо структура struct aiocb из списка ссылается на завершенную асинхронную операцию ввода/вывода (то есть статус ошибки для операции не равен EINPROGRESS
) во время вызова функции, aio_suspend() завершается без приостановки вызывающего потока.
Можно определить, какая из асинхронных операций ввода/вывода была завершена, анализируя статусы ошибки и завершения с использованием функций aio_error() и aio_return().
POSIX 1003.1 Asynchronous Input/Output
При первом вызове функций aio_*() создается пул потоков, что делает процесс многопоточным, если он не был таковым. Пул потоков не уничтожится до тех пор, пока процесс не завершится.
aio_cancel(), aio_error(), aio_fsync(), aio_read(), aio_return(), aio_write(), struct aiocb, lio_listio(), struct timespec
Предыдущий раздел: Описание API системной библиотеки