gpt4 book ai didi

c++ - Linux IPC - 多个编写器,单个读取器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:14:40 24 4
gpt4 key购买 nike

我以前从未在 Linux 上编写过任何 IPC C++。

我的问题是我将有多个客户端(写入器)和一个服务器(读取器)。所有这些都将在同一台机器上。作者将向读者提供数据 block (字符串/结构)。然后,读取器将在 FIFO 中读取它们并对其进行处理。

据我所知,Linux 上的 IPC 类型要么是管道,要么是套接字/消息队列。

我只是想知道是否有人可以向我推荐一条走下去的路。我倾向于套接字,但我没有真正的基础。在开始这段旅程之前,有什么我应该阅读/理解的吗?

谢谢

最佳答案

您应该考虑的主要问题是您传递的数据类型,因为这将部分决定您的选择。这归结为您的数据是否有界。如果它没有边界,那么像 FIFO 或套接字这样的面向流的东西是合适的;如果是,那么您可能会更好地利用诸如 MQ 或共享内存之类的东西。由于您同时提到了字符串和结构,所以很难说什么适合您的情况,但如果您的字符串在某个合理的最大值范围内,您可以使用任何带有一些小摆弄的东西。

第二个是速度。从来没有一个完全正确的答案,但通常是这样的:共享内存、MQ、FiFO、域套接字、网络套接字。

第三是易用性。共享内存是最大的 PITA,因为您必须处理自己的同步。只要您的消息长度保持在 PIPE_BUF 大小以下,管道就很容易。操作系统使用 MQ 解决了您的大部分头痛问题。套接字很简单,但您有设置样板。

最后,一些 IPC 机制同时具有 POSIX 和 SYSV 变体。通常 POSIX 是可行的方法,除非 SYSV 类型具有您真正需要或想要的某些功能。

编辑:Count0 的回答提醒我您可能对更抽象和更高层次的东西感兴趣。除了 ACE,您还可以查看 Poco .而且,当然,如果没有提及 Boost,那么任何 SO 答案都是不完整的某处。

关于c++ - Linux IPC - 多个编写器,单个读取器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1428117/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com