aio_suspend - ожидает
завершения
операции
ввода-вывода
или
истечения
срока
Real-time library (
librt,
-lrt)
#include <aio.h>
int aio_suspend(const struct aiocb *const aiocb_list[], int nitems,
const struct timespec *restrict timeout);
Функция
aio_suspend()
приостанавливает
выполнение
вызывающей
нити до тех
пор, пока не
случиться
одно из
следующих
событий:
- •
- Завершится
один или
более
асинхронных
запросов
ввода-вывода
из списка
aiocb_list.
- •
- Будет
получен
сигнал.
- •
- Если
значение
timeout не NULL и
истечёт
указанный
срок
(описание
структуры
timespec
смотрите в
nanosleep(2)).
В
аргументе
nitems задаётся
количество
элементов
в
aiocb_list. Каждый
элемент в
списке,
который
задаётся в
aiocb_list, должен
быть равен NULL
(игнорируется),
или
указывать
на
управляющий
блок,
который
создаётся
при
создании
операции
ввода-вывода
с помощью
aio_read(3),
aio_write(3) или
lio_listio(3)
(описание
структуры
aiocb смотрите
в
aio(7)).
If
CLOCK_MONOTONIC is supported, this clock is used to measure the
timeout interval (see
clock_gettime(2)).
Если
функция
завершается
после
выполнения
запроса
ввода-вывода
из списка
aiocb_list, то
возвращается
0. В
противном
случае
возвращается
-1, а
значением
errno
определяется
тип ошибки.
- EAGAIN
- Истёк
период
ожидания в
вызове до
завершения
какой-либо
операции.
- EINTR
- Вызов
завершён
по сигналу
(возможно
по сигналу,
который
ожидался
как
завершение
операции);
смотрите
signal(7).
- ENOSYS
- Функция
aio_suspend() не
реализована.
Функция
aio_suspend()
доступна в
glibc начиная с
версии 2.1.
Описание
терминов
данного
раздела
смотрите в
attributes(7).
Интерфейс |
Атрибут |
Значение |
aio_suspend() |
Безвредность
в нитях |
MT-Safe |
POSIX.1-2001, POSIX.1-2008.
POSIX doesn't specify the parameters to be
restrict; that is specific to
glibc.
Можно
выполнить
опрос с не NULL
значением
timeout, указав
нулевой
временной
интервал.
Если одна
или
несколько
асинхронных
операций
ввода-вывода,
указанных
в
aiocb_list, уже
завершилась
на момент
вызова
aio_suspend(),
то вызов
сразу
завершает
работу.
Чтобы
после
успешного
возврата
из
aio_suspend()
определить,
какие
операции
ввода-вывода
завершились,
используйте
aio_error(3) для
проверки
списка
структур
aiocb,
на который
указывает
aiocb_list.
Реализация
aio_suspend() в glibc не
является
безопасной
для
асинхронных
сигналов,
что
нарушает
требования
POSIX.1.
aio_cancel(3),
aio_error(3),
aio_fsync(3),
aio_read(3),
aio_return(3),
aio_write(3),
lio_listio(3),
aio(7),
time(7)
Русский
перевод
этой
страницы
руководства
был сделан
Dmitry Bolkhovskikh <
[email protected]> и Yuri Kozlov
<
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]