套接字 – 哪个IPC在这里效率更高?
发布时间:2020-12-15 21:56:37 所属栏目:安全 来源:网络整理
导读:我有一个系统应用程序,它作为unix上12个进程的集合运行.有一个监视进程,它与其他11个进程交换数据. IPC的要求是使这11个过程与监控过程进行通信,并以最有效的方式设计.你们可以权衡以下两个选项,或建议一个更好的选项. 1)具有UDP套接字通信,其中这11个进程将
我有一个系统应用程序,它作为unix上12个进程的集合运行.有一个监视进程,它与其他11个进程交换数据.
IPC的要求是使这11个过程与监控过程进行通信,并以最有效的方式设计.你们可以权衡以下两个选项,或建议一个更好的选项. 1)具有UDP套接字通信,其中这11个进程将定期将数据推送到监视器进程.监控过程只是监听和捕获足够好的信息. 要么 2)具有共享内存实现.所以有11个共享内存段,每个段在2个进程(进程ith和监视进程)之间共享. 对于共享内存,它似乎更快但需要锁定/同步,其中在udp中,内核将数据从一个进程的内存空间复制到另一个进程. 任何人都可以提供更多输入来帮助更好地评估这两种方法. ?谢谢. 解决方法
协调共享内存非常棘手.父必须知道何时读取11个共享内存段中的每一个的哪一部分,并让孩子知道何时读取数据以便可以重用共享内存的一部分等.因此,尽管复制可能是更快,其余的协调(可能使用信号量集 – 可能有22个信号量,一个用于11个通信信道的每个方向)意味着你几乎肯定会找到一个基于文件描述符的机制更容易编码. select()或poll()或variant系统调用可用于告诉您何时有要读取的主数据.内核处理调度和流量控制等所有令人讨厌的问题.
因此,除非您能够真正证明您将从共享内存版本中获得性能优势,否则请使用Unix域套接字.但是期望丢失一些头发(以及一些数据)以使共享内存实现正确. (您可以证明使用共享内存与原始的,不正确的同步系统是否有性能优势;您可能不会使用粗略的不正确同步系统进行生产.) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 在iTerm2中使用Zmodem实现快速传输文件
- mddialog中的angularjs-ng-repeat多次重复
- YouCompleteMe unavailable: requires Vim 7.4.1578+
- 泛型 – Scala无法推断出正确的类型参数
- angularjs – 对如何处理CORS OPTIONS预检要求感到困惑
- 安装yum报错 ImportError: No module named sqlitecachec
- arrays – map直接指向Array
- shell脚本积累---shell文件包含
- angular – 如何防止PWA在新的Safari窗口中打开链接和Auth0
- 基于soap协议和webservice的客户端与服务器通信