Linux IPC选择?
我有两个进程A和B。A和B有时需要通信(双向)来传递信号、消息等。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。像这样,数字数据需要通过
我对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必须为“中等”或更低。根据描述,它不能是“高”。