Ну, я должен возразить, что MQ "очень" неэффективны.
Это правда, что при копировании данных в / из ядра возникают некоторые накладные расходы, и для действительно высокопроизводительных приложений это может быть реальным соображением и причиной вместо этого использовать разделяемую или кучную память.
Но, если не считать хорошо написанного кода с общей памятью, MQ являются самыми быстрыми IPC и оснащены существенными встроенными средствами. Устранены проблемы с синхронизацией, и (по крайней мере, под Linux) дескриптор очереди сообщений (mqd_t) может использоваться в качестве дескриптора файла в операторе select (). Это обеспечивает значительную гибкость при выполнении чего-либо, кроме ожидания мьютекса или постоянного опроса. Кроме того, MQ сохраняются в ядре, и это хорошая небольшая функция, если важно, чтобы данные очереди переживали сбой приложения.