【发布时间】:2011-07-07 17:17:25
【问题描述】:
我有一个系统应用程序,它作为一个集合在 unix 上的 12 个进程上运行。有一个监视进程,它与其他 11 个进程交换数据。
IPC 要求是让这 11 个进程与监控进程进行通信,以执行效率最高的方式设计。你们能否权衡以下两个选项,或者建议一个更好的选项。
1) 有一个 UDP 套接字通信,这 11 个进程会定期向监控进程推送数据。监控进程只是监听和捕获足够好的信息。
或
2) 有一个共享内存实现。所以有 11 个共享内存段,每个共享内存段在 2 个进程(进程 ith 和监视进程)之间共享。
对于共享内存,它似乎更快,但需要锁定/同步,而在 udp 中,内核将数据从一个进程的内存空间复制到另一个进程。
谁能提供更多输入来帮助更好地评估这两种方法。 ?谢谢。
【问题讨论】:
-
你的意思是 UDP 套接字,还是 Unix 域套接字?
标签: sockets unix operating-system ipc shared-memory