завершение zsh :полные параметры, требующие числа в качестве аргумента

По сути, общие очереди памяти и сообщений — это разные типы ipc, и они работают по-разному.Какой из них вам нужен, зависит от вашего приложения.

С общей памятью вы должны создать область памяти, которая отображается в адресное пространство двух процессов через:

handle = shm_open(Name /* '/dev/shm100' or similar*/, FLAGS);
/* now the memory can be mapped into address space */
address = mmap(0, SIZE, PROT, MAP_SHARED, &handle, 0);

Вам по-прежнему необходимо синхронизировать доступ к памяти через семафоры и т.п.

Очереди сообщений, с другой стороны, могут быть записаны и прочитаны из подобных обычных файлов. Необходимо учитывать максимальный размер и максимальное количество сообщений , которые можно настроить с помощью sysctrl:

fs.mqueue.msgsize_max = 9000
fs.mqueue.queues_max = 1024

Вызовы для отправки и получения будут:

mqd_t queue = mq_open(MQ_NAME, O_RDWR);
msg_size = mq_timedreceive(queue, request, SIZE, 0, (const struct timespec*) &my_timeout);
/* or */
int ret = mq_send(queue, (const char*) req, SIZE, 1);
mq_close(queue);
0
19.08.2021, 14:56
0 ответов

Теги

Похожие вопросы