Для чего вы использовали очереди сообщений sysv / posix? - PullRequest
8 голосов
/ 28 февраля 2010

Я никогда не видел ни одного проекта или чего-либо, использующего posix или sysv очереди сообщений - и, будучи любопытным, какие проблемы или проекты вы, ребята, использовали для них?

Ответы [ 3 ]

2 голосов
/ 28 февраля 2010

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

Если честно, я использовал очереди сообщений System V, потому что никогда раньше не использовал их и хотел этого. Я уверен, что есть другие методы IPC, которые я мог бы использовать.


Прошло много времени с тех пор, как я занимался программированием на VxWorks, но вы также можете найти очереди сообщений, используемые в приложениях VxWorks. Согласно Руководству разработчика приложений VxWorks (поиск Google), основным механизмом взаимодействия между задачами в пределах одного ЦП является очереди сообщений . VxWorks использует две библиотеки подпрограмм очереди сообщений (POSIX и VxWorks).

1 голос
/ 11 августа 2011

Вы можете использовать его для IPC наверняка, потому что это механизм IPC. С помощью этого механизма вы можете создавать многопроцессорные приложения для обработки событий, в которых все приложения используют очередь и каждое из которых ожидает сообщения особого типа (особого события, которое должно произойти). Когда приходит сообщение, этот процесс принимает сообщение, обрабатывает его и помещает результат обратно в очередь, чтобы другой процесс мог его использовать.
Однажды я написал такое приложение, используя очереди сообщений. С ним довольно легко работать, и ему не нужны механизмы межпроцессной синхронизации, такие как семафоры. Вы также можете использовать его вместо файлов с общей памятью, сопоставленных с памятью, в ситуациях, когда все, что вам нужно, это просто отправить структуру или какой-то вид упакованных данных в другие процессы. Очереди сообщений использовать гораздо проще, чем любой другой механизм IPC.
Эта книга содержит всю информацию, которую вам необходимо знать об очередях сообщений и других механизмах IPC в Linux.

1 голос
/ 02 марта 2010

Однажды я написал утилиту генерации ввода-вывода в текстовом режиме, в которой один поток отвечал за обновление пользовательского интерфейса и несколько рабочих потоков для выполнения реальной работы ввода-вывода. Когда рабочий поток завершил ввод-вывод, он отправил сообщение обновления в поток пользовательского интерфейса. Я реализовал эту систему сообщений, используя очередь сообщений POSIX.

Зачем реализовывать это так? В то время это звучало как хорошая идея, и мне было интересно, как они работают. Я решил, что смогу решить проблему и научиться чему-то одновременно. Было много разных техник, которые я мог бы использовать, и я не думаю, что была какая-то глубокая причина, почему я выбрал эту технику. Я не осознавал этого позже, но я был рад, что использовал очередь POSIX, когда мне пришлось портировать утилиту на другую систему (она также была POSIX-совместимой, поэтому мне не пришлось беспокоиться о переносе внешних библиотек, чтобы получить приложение для запуска).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...