linux - D-Bus线程模型

标签 linux multithreading dbus

我开始使用 D-Bus作为 Linux/KDE 中新项目的 IPC 机制。而且我发现该文档根本没有真正解决并发问题。 D-Bus 服务如何处理来自不同客户端的多个并发调用?什么是线程模型?服务是否可以假设它是单线程的并且 D-Bus 会自行排队请求?

最佳答案

作为一种协议(protocol),D-Bus 不涉及线程。

D-Bus 连接串行接收消息。在协议(protocol)级别,对消息的回复是异步的:即发送方不必在发送更多消息之前等待回复。

虽然原则上 D-Bus 实现可以同时向服务实现发送消息,但我不知道有任何这样做的。

通常,D-Bus 实现(或“绑定(bind)”,如果您愿意)允许服务为每个方法(甚至每个方法调用)决定是同步还是异步响应传入的方法调用。这方面的细节取决于您使用的特定实现。

如果您异步响应方法调用,则您的服务实现负责确保在多个响应未决时任何状态保持一致。如果您总是同步响应,那么您就知道您一次只处理一个方法调用。

关于linux - D-Bus线程模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1992777/

相关文章:

linux - 在低内存嵌入式系统中使用Busybox有什么意义?

linux - Google 建议使用 curl 进行查询

java - 进程内存与堆——JVM

c# - Interlocked.CompareExchange(引用值,newValue,compareTo)

python-3.x - 在 Python 3 中从 dbus 迁移到 GDbus

linux - 时间是如何计算的?

java - 从本地机器上的多个线程通过 RMI 调用线程安全方法是否安全?

c++ - 将数组传递给线程

c - 使用 gdbus 查找 D-Bus 唯一地址

java - Alljoyn 框架 - Java - 信号。 BUS_NO_SUCH_INTERFACE