DBus与其他进程间通信方式的区别

Difference between DBus and other Interprocess Communications method

当我研究 Linux 进程间通信时,我知道有一些方法:管道、消息队列、套接字、信号、共享内存、信号量,但没有名为 Dbus 的方法。

但是今天,当我研究 Dbus 时,我读到:"D-Bus is a system for interprocess communication (IPC)"(参见 link:https://en.wikipedia.org/wiki/D-Bus

所以我的问题是: DBus和其他IPC方法有什么不同?

没有技术上的差异,而是历史上的差异。

D-Bus 以前不是Linux(即内核)IPC,而是一个额外的中间件IPC。但是在 systemd 的引入过程中,D-Bus 成为几个 Linux 发行版的基本系统的一部分。

一对一的ipc方法有一大群协作进程会导致密集网格。但是在 Dbus 的情况下,每个进程都可以连接到任意数量的具有授权访问权限的进程。在公共的单一共享频道上,用户可以连接到他自己的会话或新会话,而不会干扰其他用户的会话。这大大提高了性能

参考link

https://blogs.gnome.org/abustany/2010/05/20/ipc-performance-the-return-of-the-report/

这显示了 DBus 性能与自定义 IPC 系统的比较。您可以更好地了解 Dbus

的性能