Linux IPC选择?

Linux IPC选择?,linux,ipc,message-queue,semaphore,dbus,Linux,Ipc,Message Queue,Semaphore,Dbus,我有两个进程A和B。A和B有时需要通信(双向)来传递信号、消息等。 我对Linux中可用的IPC做了一些基础研究,如信号量、消息队列、DBU等。 现在我在决定使用哪一个时感到困惑,有人能告诉我哪一个IPC更适合我的应用程序吗 提前谢谢 编辑:详细说明应用程序。(它是一个嵌入式应用程序) 过程A将监控温度、速度计算等。过程B将驱动电机,读取传感器值(数字)等。有时我需要向过程B发送信号,告知达到最高温度,因此停止驱动电机。有时需要将从进程A中的传感器读取的数据发送到进程B。像这样,数字数据需要通过

我有两个进程A和B。A和B有时需要通信(双向)来传递信号、消息等。
我对Linux中可用的IPC做了一些基础研究,如信号量、消息队列、DBU等。
现在我在决定使用哪一个时感到困惑,有人能告诉我哪一个IPC更适合我的应用程序吗

提前谢谢

编辑:详细说明应用程序。(它是一个嵌入式应用程序)

过程A将监控温度、速度计算等。过程B将驱动电机,读取传感器值(数字)等。有时我需要向过程B发送信号,告知达到最高温度,因此停止驱动电机。有时需要将从进程A中的传感器读取的数据发送到进程B。像这样,数字数据需要通过进程传递。我是在ARM体系结构中这样做的。

IPC技术的选择取决于您试图实现的应用程序。以下是基于性能的良好比较:

IPC name      Latency     Throughput   Description
-----------------------------------------------------------------------------------------
Signal        Low          n/a         Can be used only for notification, traditionally-
                                       to push process to change its state

Socket        Moderate     Moderate    Only one mechanism which works for remote nodes,
                                       not very fast but universal

D-Bus         High         High        A high-level protocol that increases latency and
                                       reduces throughput compared to when using base
                                       sockets, gains in increased ease of use

Shared        n/a          High        Data saved in-between process runs(due to swapping
memory                                 access time) can have non-constant access latency

Mapped files  n/a          High        Data can be saved in-between device boots

Message      Low           Moderate    Data saved in-between process runs. The message
queue                                  size is limited but there is less overhead
                                       to handle messages
这里还有一个很好的比较


这取决于您的应用程序……也许您应该详细说明您的处理器将来回传递的数据类型,以及可能使用的处理器类型(ARM?、x86?、MIPS?)@n.m.和LastCoder我已经编辑了这个问题,并添加了应用程序的详细信息。您可以在DBU和手工插座ipc之间进行选择。所以问题是:为什么要重新发明轮子而不使用dbus?我从dbus开始,但有点困惑dbus是否是适合我的应用程序的IPC。感谢您的比较,我计划在我的应用程序中使用D-Bus,我很担心它的高延迟。我的是实时应用程序。D-bus的吞吐量部分表示“高”,根据提供的描述,这应该是低的。此表对D-bus没有意义。它说“与使用基本套接字相比,降低了吞吐量”。插座列为“中等”通电,因此D-Bus必须为“中等”或更低。根据描述,它不能是“高”。