thread_pool_start()

Запустить пул потоков

Прототип:

#include <sys/dispatch.h>
int thread_pool_start( void *pool );

Аргументы:

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

Библиотека:

libc

Описание:

Функция thread_pool_start() запускает пул потоков pool. Возврат из этой функции может и не произойти, это зависит от флагов, переданных в thread_pool_create().

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

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

Примеры:

#include <sys/dispatch.h>
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char **argv )
{
thread_pool_attr_t pool_attr;
thread_pool_t *tpp;
dispatch_t *dpp;
resmgr_attr_t attr;
resmgr_context_t *ctp;
if ( (dpp = dispatch_create()) == NULL )
{
fprintf( stderr, "%s: Unable to allocate dispatch context.\n", argv[0] );
return (EXIT_FAILURE);
}
memset( &pool_attr, 0, sizeof( pool_attr ) );
pool_attr.handle = dpp;
pool_attr.context_alloc = dispatch_context_alloc;
pool_attr.block_func = dispatch_block;
pool_attr.unblock_func = dispatch_unblock;
pool_attr.handler_func = dispatch_handler;
pool_attr.context_free = dispatch_context_free;
pool_attr.lo_water = 2;
pool_attr.hi_water = 4;
pool_attr.increment = 1;
pool_attr.maximum = 50;
if ( (tpp = thread_pool_create( &pool_attr, POOL_FLAG_EXIT_SELF )) == NULL )
{
fprintf( stderr, "%s: Unable to initialize thread pool.\n", argv[0] );
return (EXIT_FAILURE);
}
...
/* Never returns */
thread_pool_start( tpp );
}

Другие примеры, использующие интерфейс диспетчера см. на страницах dispatch_create(), message_attach(), resmgr_attach() и thread_pool_create().

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

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

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

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

thread_pool_create(), thread_pool_destroy()




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