Я исследую общую память POSIX для IP C вместо очереди сообщений POSIX. Я планирую сделать область разделяемой памяти достаточно большой, чтобы вместить 50 сообщений по 750 байт каждое. Сообщения будут отправляться через произвольные интервалы от нескольких ядер (серверов) одному ядру (клиенту), который получает сообщения и предпринимает действия на основе содержимого сообщения.
У меня есть три вопроса о разделяемой памяти POSIX:
(1) есть ли способ автоматического уведомления клиента c о появлении новых данных, например, методы, доступные для каналов POSIX и сообщений очереди?
(2) Какие проблемы могут возникнуть при использовании разделяемой памяти без блокировки, когда данные являются однократными или однократными?
(3) Я прочитал, что разделяемая память - это самый быстрый метод IP C, поскольку он имеет самую высокую пропускную способность, и данные сразу становятся доступными как в ядрах сервера, так и в клиентских ядрах. Однако с помощью очередей и каналов сообщений ядра сервера могут отправлять сообщения и продолжать свою работу, не ожидая блокировки. Замедляет ли необходимость блокировки производительность общей памяти по очередям сообщений и каналам в сценарии описанного выше типа?