Освободить память, выделенную под пул потоков
#include <sys/iofunc.h>#include <sys/dispatch.h>int thread_pool_destroy( thread_pool_t *pool );
libc
Функция thread_pool_destroy() освобождает память, выделенную пулу потоков, определяемому дескриптором pool. Это происходит только после того, как все потоки этого пула завершились.
Функция thread_pool_destroy() вызывает разблокирующий обработчик, переданный в структуру атрибутов пула. Разблокирующий обработчик вызывается хотя бы единожды для каждого потока в пуле. После того, как этот обработчик вызван, поток, вызывающий thread_pool_destroy() блокируется до тех пор, пока количество аотоко в пуле не уменьшится до нуля. Когда в пуле не осталось больше потоков, дескриптор пула освобождается и происходит возврат из thread_pool_destroy().
Косвенный эффект этого поведения заключается в том, что поток, порождённый пулом потоков, не может вызвать thread_pool_destroy(), потому что счётчик потоков в пуле никогда не опустится до нуля, а значит, возврат из функции никогда не случится. |
#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 системной библиотеки