3

当我执行“dbus_connection_close”时,是否需要刷新消息队列?

换句话说,我是否需要继续使用“dbus_connection_read_write_dispatch”,直到收到“断开连接”指示,或者停止调度是否安全?

更新:我需要以干净的方式关闭与 DBus 的连接。通过阅读文档,必须在“取消引用”连接之前完成所有清理工作,并且这个过程没有很好地记录 IMO。

4

2 回答 2

2

经过一番挖掘,似乎有两种类型的连接:共享和私有。

共享连接不能只关闭unreferenced此外,除非必须传递传出消息,否则似乎不必刷新和分派连接。

就我而言,我只需要尽快结束通过 DBus 进行的通信,而无需尝试挽救任何传出消息。

因此,简短的回答是:否 - 不需要在dbus_connection_unref.

于 2009-11-05T15:03:35.497 回答
0

查看dbus_connection_close() 的文档,唯一可以调用的是指示连接已关闭的调度状态函数。

因此,在这里订购是您可能需要注意的事情.. 即在消息队列中留下的东西之前收到关闭/断开连接的通知。

查看函数的源代码,看起来它唯一要做的就是在失败时返回,即无效连接/空指针。否则,它(似乎)只是挂断。

这意味着是的,您可能应该在挂断之前刷新消息队列。

免责声明:我只需要与 dbus 交谈几次,我绝不是这方面的权威。

于 2009-11-02T02:31:43.620 回答