Очереди сообщений
Это механизм, предназначенный
для передачи информации от одного процесса к другому.
Очередь
сообщений, несмотря на то, что по своему виду напоминает программный канал, но
существенно от него отличается. Сходство в том, что можно посылать читателям
целый поток сообщений. Вторым сходством каналов и очереди является то, что
передача сообщений происходит только в одном направлении, т.е. от писателя к читателю.
Если нужно передать сообщение обратно, то нужно установить вторую очередь.
С
точки зрения реализации очередь и каналы различаются.
- В
отличие от канала, в котором обмениваются сообщениями только 2 процесса, в
очереди обмен может происходить между многими процессами.
- Если
для организации канала используется файл PIPE, то в
очередях выделяется сегмент оперативной памяти.
- Любой
процесс «Читатель» может читать сообщения выборочно, т.е. не в том порядке
в каком они стоят в очереди, при этом если канал работает по принципу FIFO, то очередь использует 4 разных принципа (FIFO, LIFO,
приоритетной выборки, произвольная выборка)
- После
того как сообщения, каким- либо процессом- читателем прочитано, оно не
удаляется из очереди и может читаться этим процессом или другим.
- Если
в каналах непосредственно передаются данные, т.е. сообщения, то в очереди
в действительности передаются не сообщения, а только адреса местоположения
этих сообщений, с указанием размеров, т. е. Длин сообщений.
Число
и синтаксис операторов управления очередью резко отличаются в разных ОС.
Перечислим возможные функции операторов:
- Создание
новой очереди.
- Открыть
существующую очередь (такой оператор используется «читателем» для
установления связи с очередью).
- Читать
без удаления.
- Читать
с удалением из очереди.
- Добавление
сообщений в очередь.
- Завершение
использования очереди.
- Определение
числа сообщений в очереди. И др. различные операторы.
В
качестве параметров может быть большое разнообразие: