dispatch_context_alloc()

Вернуть указатель на контекст диспетчеризации

Прототип:

#include <sys/iofunc.h>
#include <sys/dispatch.h>
dispatch_context_t * dispatch_context_alloc( dispatch_t *dpp );

Аргументы:

dpp
Указатель на структуру диспетчеризации, созданную dispatch_create().

Библиотека:

libc

Описание:

Функция dispatch_context_alloc() возвращает указатель на контекст диспетчеризации. Функция принимает дескриптор dpp, полученный из dispatch_create(). Контекст диспетчеризации используется диспетчером во время его работы. Он передается в качестве аргумента в функции dispatch_block() и dispatch_handler().


Note: Функция dispatch_context_alloc() завершается с ошибкой, если никакие события для диспетчеризации не были прикреплены (например, не вызвана функция message_attach(), resmgr_attach() или select_attach()). Библиотека диспетчеризации не сможет выделить подходящий контекст, не зная, на каком типе событий планируется блокироваться.

Эта функция является частью уровня диспетчеризации менеджера ресурсов.

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

Указатель на контекст диспетчера. Если возникла ошибка, функция возвращает NULL, код ошибки записывается в errno.

Коды ошибок:

EINVAL
Отстутствуют присоединенные события.
ENOMEM
Недостаточно памяти для создания контекста.

Примеры:

#include <sys/dispatch.h>
#include <stdio.h>
#include <stdlib.h>
int main( int argc, char **argv )
{
dispatch_t *dpp;
dispatch_context_t *ctp;
if ( ( dpp = dispatch_create() ) == NULL )
{
fprintf( stderr, "%s: Unable to allocate dispatch handle.\n", argv[0] );
return (EXIT_FAILURE);
}
...
ctp = dispatch_context_alloc( dpp );
...
return (EXIT_SUCCESS);
}

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

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

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

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

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

dispatch_block(), dispatch_context_free(), dispatch_create(), dispatch_create_channel(), dispatch_handler(), dispatch_unblock()




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