Передача и прием сообщений в реальном времени
Над описанными в настоящем курсе очередями сообщений определены следующие группы функций:
- открытие очереди;
- отправка сообщения в очередь;
- прием (синхронный или асинхронный) сообщения из очереди;
- изменение атрибутов очереди;
- регистрация на получение уведомления о появлении сообщения в очереди;
- закрытие очереди;
- удаление очереди.
Для открытия очереди служит функция mq_open(). Одну очередь могут открыть несколько посылающих и/или принимающих сообщения процессов. При открытии может производиться контроль прав доступа.
Отправка осуществляется функциями mq_send() и mq_timedsend().
Для извлечения сообщений из очереди служат функции mq_receive() и mq_timedreceive(). На порядок приема влияет имеющийся механизм приоритетов сообщений.
Для опроса и/или установки атрибутов очереди служат функции mq_getattr() и mq_setattr(). Для каждой очереди задается фиксированная верхняя граница размера сообщений, которые могут быть в эту очередь отправлены.
Посредством функции mq_notify() процесс может зарегистрироваться на получение уведомления о том, что в очередь, бывшую до этого пустой, поступило сообщение.
После того, как процесс завершил работу с очередью сообщений, соответствующий дескриптор следует закрыть, воспользовавшись функцией mq_close().
Очередь сообщений можно удалить с помощью функции mq_unlink().