Получить асинхронное сообщение
#include <sys/asyncmsg.h>struct _asyncmsg_get_header * asyncmsg_get( int chid );
libasyncmsg
Функция asyncmsg_get() получает до пяти асинхронных сообщений из канала, указанного аргументом chid. Чтобы получать больше сообщений, следует вызывать эту функцию в цикле, пока функция не вернет NULL
и не установит errno в EAGAIN
чтобы обозначить, что очередь сообщений исчерпана.
![]() | Потоки, получающие асинхронные сообщения, не наследуют приоритет отправителя. |
Если вы предоставили функцию обратного вызова при вызове asyncmsg_channel_create(), asyncmsg_get() вызывает функцию обратного вызова, чтобы выделить место для сообщения; в противном случае asyncmsg_get() использует malloc().
Указатель на связанный список структур _asyncmsg_get_header, содержащих полученные сообщения. Если возникла ошибка функция возвращает NULL
, код ошибки записывается в errno.
![]() | Следует освободить этот список от заголовков, когда закончите с ними. |
ЗОСРВ «Нейтрино»
struct _asyncmsg_get_header, asyncmsg_channel_create(), asyncmsg_channel_destroy(), asyncmsg_connect_attach(), asyncmsg_connect_attr(), asyncmsg_connect_detach(), asyncmsg_flush(), asyncmsg_free(), asyncmsg_malloc(), asyncmsg_put(), asyncmsg_putv()
Примеры использования и сведения об архитектуре библиотеки доступны в разделе общие сведения.
Предыдущий раздел: Описание API библиотеки asyncmsg