Мобильное программирование приложений реального времени в стандарте POSIX

       

Передача и прием сообщений в реальном времени


Над описанными в настоящем курсе очередями сообщений определены следующие группы функций:

  • открытие очереди;
  • отправка сообщения в очередь;
  • прием (синхронный или асинхронный) сообщения из очереди;
  • изменение атрибутов очереди;
  • регистрация на получение уведомления о появлении сообщения в очереди;
  • закрытие очереди;
  • удаление очереди.

Для открытия очереди служит функция mq_open(). Одну очередь могут открыть несколько посылающих и/или принимающих сообщения процессов. При открытии может производиться контроль прав доступа.

Отправка осуществляется функциями mq_send() и mq_timedsend().

Для извлечения сообщений из очереди служат функции mq_receive() и mq_timedreceive(). На порядок приема влияет имеющийся механизм приоритетов сообщений.

Для опроса и/или установки атрибутов очереди служат функции mq_getattr() и mq_setattr(). Для каждой очереди задается фиксированная верхняя граница размера сообщений, которые могут быть в эту очередь отправлены.

Посредством функции mq_notify() процесс может зарегистрироваться на получение уведомления о том, что в очередь, бывшую до этого пустой, поступило сообщение.

После того, как процесс завершил работу с очередью сообщений, соответствующий дескриптор следует закрыть, воспользовавшись функцией mq_close().

Очередь сообщений можно удалить с помощью функции mq_unlink().



Содержание раздела