Функция-оболочка для thread_pool_control()
#include <sys/iofunc.h>
#include <sys/dispatch.h>
int thread_pool_limits( thread_pool_t *pool,
int lowater,
int hiwater,
int maximum,
int increment,
unsigned flags );
- pool
- Дескриптор пула потоков, возвращаемый thread_pool_create().
- lowater
- Минимальное количество потоков, которое пул должен держать в заблокированном состоянии (т.е. потоки, готовые выполнять работу), или отрицательное число, если не нужно изменять текущее значение.
- hiwater
- Максимальное количество потоков, которое пул должен держать в заблокированном состоянии, или отрицательное число, если не нужно изменять текущее значение.
- maximum
- Наибольшее количество потоков, которое может создать пул, или отрицательное число, если не нужно изменять текущее значение.
- increment
- Количество потоков, создаваемых за один раз, или отрицательное число, если не нужно изменять текущее значение.
- flags
- Единственный допустимый флаг - THREAD_POOL_CONTROL_NONBLOCK. Подробнее - в thread_pool_control().
libc
Функция thread_pool_limits() - это обёртка над thread_pool_control(). Если значение lowater, hiwater, maximum или increment ≥0, то это значение настраивает параметры пула потоков, определяемого по pool.
Если флаг THREAD_POOL_CONTROL_NONBLOCK
не установлен, то верхнее и нижнее ограничения на значения следующие:
- lower = (lowater !=
-1
) : lowater ? 0
; - upper = (maximum !=
-1
) : maximum ? USHRT_MAX
;
| Не рекомендуется вызывать эту функцию для одного и того же дескриптора из нескольких потоков. |
- -1
- Возникла ошибка. Код ошибки записан в errno.
ЗОСРВ «Нейтрино»
- Да
- Обработчик прерываний
- Нет
- Обработчик сигналов
- Нет
- В потоке
- Да
thread_pool_control(), thread_pool_create(), thread_pool_destroy(), thread_pool_start()
Предыдущий раздел: Описание API системной библиотеки