【发布时间】:2016-02-26 12:07:09
【问题描述】:
当我学习Linux进程间通信时,我知道有一些方法:管道、消息队列、套接字、信号、共享内存、信号量,没有名为Dbus的方法。
但是今天,当我研究 Dbus 时,我读到:“D-Bus 是一种用于进程间通信 (IPC) 的系统”(参见那个链接:https://en.wikipedia.org/wiki/D-Bus)
所以我的问题是: DBus与其他IPC方式有什么不同?
【问题讨论】:
当我学习Linux进程间通信时,我知道有一些方法:管道、消息队列、套接字、信号、共享内存、信号量,没有名为Dbus的方法。
但是今天,当我研究 Dbus 时,我读到:“D-Bus 是一种用于进程间通信 (IPC) 的系统”(参见那个链接:https://en.wikipedia.org/wiki/D-Bus)
所以我的问题是: DBus与其他IPC方式有什么不同?
【问题讨论】:
没有技术上的差异,而是历史上的差异。
D-Bus 以前不是 Linux(即内核)IPC,而是附加的中间件 IPC。但是在systemd 的引入过程中,D-Bus 成为了几个 Linux 发行版的基本系统的一部分。
【讨论】:
一对一的ipc方法有一大群合作的进程会导致网格密集。但在 Dbus 的情况下,每个进程都可以连接到提供授予访问权限的任意数量的进程。在一个共同的单一共享频道上,用户可以连接到他自己的会话或新会话,而不会干扰其他用户的会话。这大大提高了性能
参考链接
https://blogs.gnome.org/abustany/2010/05/20/ipc-performance-the-return-of-the-report/
这显示了 DBus 性能与自定义 IPC 系统的比较。您可以更好地了解 Dbus 的性能
【讨论】: