struct aiocb

Асинхронный блок управления ввода/вывода

Прототип:

#include <aio.h>
struct aiocb {
int aio_fildes;
off_t aio_offset;
volatile void *aio_buf;
size_t aio_nbytes;
int aio_reqprio;
struct sigevent aio_sigevent;
int aio_lio_opcode;
}

Описание:

aio_fildes
Дескриптор файла для использования в асинхронных операциях ввода/вывода.

Note: Функции aio_*() работают прозрачно в распределенном окружении Qnet; поэтому дескриптор файла может быть открытым на другом узле Qnet.

aio_offset
Смещение в файле.
aio_buf
Указатель на буфер.
aio_nbytes
Длина передачи.
aio_reqprio
Приоритет запроса.
aio_sigevent
Указатель на struct sigevent, которая определяет номер сигнала и его значение.
aio_lio_opcode
Операция, которую нужно выполнить:
LIO_NOP
операция lio_listio(), указывающая, что передача не запрашивается.
LIO_NOWAIT
операция синхронизации lio_listio(), указывающая, что вызывающий поток должен продолжить выполнение, пока выполняется операция lio_listio() и не уведомлять о завершении операции.
LIO_READ
операция lio_listio(), запрашивающая чтение.
LIO_WAIT
операция синхронизации lio_listio(), указывающая, что вызывающий поток должен приостановить работу до завершения операции lio_listio().
LIO_WRITE
операция lio_listio(), запрашивающая запись.

Классификация:

POSIX 1003.1 Asynchronous Input/Output

Предостережения:

При первом вызове функций aio_*() создается пул потоков, что делает процесс многопоточным, если он не был таковым. Пул потоков не уничтожится до тех пор, пока процесс не завершится.

Тематические ссылки:

struct sigevent, aio_cancel(), aio_error(), aio_fsync(), aio_read(), aio_return(), aio_suspend(), aio_write(), lio_listio()




Предыдущий раздел: Описание API системной библиотеки