Я пишу сетевой демон в Linux с ядром 2.6, в котором один процесс производителя и N пользовательских процессов , которые не вносят никаких изменений в данные, ине создает никакого ответа обратно производителю.
Всякий раз, когда процесс производителя создает объект данных, длина которого варьируется от нескольких 10 байтов до нескольких 10 Кбайт, он должен передать объект данных в одинДоступный потребительский процесс.
Впервые я решил использовать именованную / неназванную ТРУБУ.Тем не менее, это может привести к накладным расходам при копировании памяти.
- буфер пользовательского пространства производителя --copy -> буфер PIPE пространства ядра
- буфер PIPE пространства ядра --copy--> пользовательский буфер пользовательского пространства
Поскольку программа может работать с большим количеством пиров с низкой задержкой, накладные расходы на копирование могут быть вредными.Таким образом, я решил использовать совместно используемую память POSIX с mmap ().
Мне просто интересно, не приводит ли совместное использование данных между процессами, использующими Совместно используемая память POSIX с mmap (), копия памяти , в отличие от ТРУБЫ.
Кроме того, есть ли другой способ обмена данными между процессами, но результаты без копирования?Программа будет работать в Linux с последней версией ядра и может не иметь кроссплатформенной способности.
Я решил не создавать / запускать потоки для каждого потребителя / продукта, но из-за процессак вопросам проектирования.
Спасибо за ответ.