thread_pool_destroy()

Освободить память, выделенную под пул потоков

Прототип:

#include <sys/iofunc.h>
#include <sys/dispatch.h>
int thread_pool_destroy( thread_pool_t *pool );

Аргументы:

pool
Дескриптор пула потоков, полученный от thread_pool_create().

Библиотека:

libc

Описание:

Функция thread_pool_destroy() освобождает память, выделенную пулу потоков, определяемому дескриптором pool. Это происходит только после того, как все потоки этого пула завершились.

Функция thread_pool_destroy() вызывает разблокирующий обработчик, переданный в структуру атрибутов пула. Разблокирующий обработчик вызывается хотя бы единожды для каждого потока в пуле. После того, как этот обработчик вызван, поток, вызывающий thread_pool_destroy() блокируется до тех пор, пока количество аотоко в пуле не уменьшится до нуля. Когда в пуле не осталось больше потоков, дескриптор пула освобождается и происходит возврат из thread_pool_destroy().


Note: Косвенный эффект этого поведения заключается в том, что поток, порождённый пулом потоков, не может вызвать thread_pool_destroy(), потому что счётчик потоков в пуле никогда не опустится до нуля, а значит, возврат из функции никогда не случится.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка.

Примеры:

#include <sys/dispatch.h>
#include <stdio.h>
int main( int argc, char **argv )
{
thread_pool_t *tpp;
...
thread_pool_destroy( tpp );
}

Другие примеры приведены в dispatch_create(), message_attach(), resmgr_attach() и thread_pool_create().

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

ЗОСРВ «Нейтрино»

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

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

thread_pool_control(), thread_pool_create(), thread_pool_limits(), thread_pool_start()




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