Scroll to navigation

aio_init(3) Library Functions Manual aio_init(3)

ИМЯ

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

БИБЛИОТЕКА

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.

СТАНДАРТЫ

GNU.

ИСТОРИЯ

glibc 2.1.

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

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 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

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

2 мая 2024 г. Справочные страницы Linux 6.8