12

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

4

1 回答 1

8

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

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

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

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

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

于 2010-01-03T02:38:04.703 回答