Squeak.ru - шаблоны программирования

Должен ли я использовать msgsnd или mq_send?

Я изучаю Unix IPC, и в моей книге рассказывается только о семействе функций msg*. Однако, просматривая справочные страницы, я узнал об эквивалентах mq_. http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/0650/bks/SGI_Developer/books/T_IRIX_Prog/sgi_html/ch06.html описывает некоторые различия между ними, но я Я не уверен, насколько это зависит от реализации. Есть ли веские причины использовать одно семейство вместо другого? Один из них "лучше" другого?

05.12.2009

Ответы:


1

Функции mq_* — это функции POSIX. Функции msg* происходят из того, что обычно известно как «System V IPC» (поскольку они являются частью средства IPC, представленного в UNIX System V, которое также включает общую память и семафоры). Я считаю справедливым сказать, что функции msg* включены в POSIX. и стандарт X / Open больше из-за обратной совместимости, чем из-за того, что он желателен в других отношениях; это может быть несправедливо по отношению к ним, но обычно стандарты стараются избегать нескольких способов достижения одного и того же результата. Ни того, ни другого в исходных версиях POSIX не было.

Вам нужно подумать, куда вы будете портировать свой код. Я бы предложил использовать более современные функции mq_*, если они доступны везде, где вам нужно, хотя сам я ими не пользовался. Вообще говоря, функции msg* использовались реже, чем функции разделяемой памяти и семафора, но этот интерфейс существует примерно (десять лет или больше) дольше, чем интерфейс POSIX, поэтому он может быть более широко доступен.

05.12.2009
  • Ух ты, значит, функции msg* не соответствуют POSIX? В моей книге они называются очередями сообщений POSIX:XSI... 05.12.2009
  • Думаю, это называется ребрендинг. ;) 05.12.2009
  • Они находятся в POSIX - они не возникли в POSIX (фактически они предшествовали POSIX). И ваша книга правильно называет их POSIX:XSI. 05.12.2009

  • 2

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

    Основные отличия заключаются в том, что очереди POSIX могут генерировать сигнал или порождать новый поток, когда сообщения помещаются в пустую очередь. Очереди POSIX также всегда возвращают самое старое сообщение с наивысшим приоритетом; очереди SysV могут возвращать сообщение любого указанного вами приоритета.

    Пробег у всех разный, но я считаю интерфейс POSIX более интуитивным и менее причудливым, чем SYSV или SysV IPC в целом.

    05.12.2009
    Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...