Scroll to navigation

aio_init(3) Library Functions Manual aio_init(3)

ИМЯ

aio_init - инициализирует асинхронный ввод-вывод

LIBRARY

Real-time library (librt, -lrt)

СИНТАКСИС

#define _GNU_SOURCE         /* см. feature_test_macros(7) */
#include <aio.h>
void aio_init(const struct aioinit *init);

ОПИСАНИЕ

Имеющаяся только в GNU функция aio_init() позволяет вызывающему указать подстроечные подсказки реализации glibc POSIX AIO. Использовать данную функцию необязательно, но для эффективности её нужно вызвать перед вызовом какой-либо функции программного интерфейса POSIX AIO.

Подстроечная информация передаётся в буфере, на который указывает параметр init. Данный буфер представляет собой следующую структуру:


struct aioinit {

int aio_threads; /* максимальное количество нитей */
int aio_num; /* количество ожидаемых одновременных
запросов */
int aio_locks; /* не используется */
int aio_usedba; /* не используется */
int aio_debug; /* не используется */
int aio_numusers; /* не используется */
int aio_idle_time; /* количество секунд перед завершением
незанятой нити (начиная с glibc 2.2) */
int aio_reserved; };

В структуре aioinit используются следующие поля:

В этом поле задаётся максимальное количество обрабатывающих (worker) нитей, которые могут использоваться в реализации. Если количество ожидающих операций ввода-вывода превышает это значение, то лишние операции будут в очереди до тех пор, пока не освободится обрабатывающая нить. Если значение поля меньше 1, то используется значение 1. Значение по умолчанию равно 20.
В этом поле задаётся максимальное количество одновременных запросов ввода-вывода, которое вызывающий хочет видеть в очереди. Если значение поля меньше 32, то оно округляется до 32. Значение по умолчанию равно 64.
В этом поле задаётся период времени в секундах, который обрабатывающая нить должна ждать следующего запроса перед своим уничтожением, отсчитывая от окончания выполнения предыдущего запроса. Значение по умолчанию равно 1.

ВЕРСИИ

Функция aio_init() доступна в glibc начиная с версии 2.1.

СТАНДАРТЫ

Эта функция является расширением GNU.

СМОТРИТЕ ТАКЖЕ

aio(7)

ПЕРЕВОД

Русский перевод этой страницы руководства разработал Dmitry Bolkhovskikh <d20052005@yandex.ru> и Yuri Kozlov <yuray@komyakino.ru>

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику по его адресу электронной почты или по адресу списка рассылки русских переводчиков.

30 октября 2022 г. Linux man-pages 6.03