Какой IPC здесь более эффективен?

У меня есть системное приложение, которое работает как набор из 12 процессов в unix. Есть процесс монитора, который обменивается данными с 11 другими процессами.

Требование IPC состоит в том, чтобы эти 11 процессов взаимодействовали с процессом мониторинга, спроектированные таким образом, чтобы это было наиболее эффективным с точки зрения выполнения. Не могли бы вы взвесить два варианта ниже или предложить лучший.

1) имеют связь по UDP-сокету, где эти 11 процессов будут передавать данные процессу мониторинга через определенные промежутки времени. процесс монитора просто прослушивает и собирает информацию, что достаточно хорошо.

ИЛИ

2) иметь реализацию с общей памятью. Таким образом, имеется 11 сегментов разделяемой памяти, каждый из которых разделяется между двумя процессами (процесс i-й и процесс мониторинга).

Для общей памяти это кажется быстрее, но требуется блокировка / синхронизация, где, как и в udp, ядро ​​копирует данные из пространства памяти одного процесса в другой.

Может ли кто-нибудь предоставить дополнительные материалы, чтобы помочь лучше оценить два метода. ? Спасибо.

5
задан sbr 3 March 2011 в 01:01
поделиться