为何选择DBusWatch?为什么不dbus_connection_read_write_dispatch?

时间:2015-03-11 17:49:55

标签: dbus

DBusWatch and DBusTimeout examples询问了类似的问题,但没有给出原因?

任何人都可以解释一下,为什么在dbus_connection_read_write_dispatch()可以读写时使用DBusWatch函数?

1 个答案:

答案 0 :(得分:0)

“dbus_connection_read_write_dispatch()”的DBUS文档说:

  

思考这个功能的方法是它要么取得某种进展,要么阻止它。请注意,虽然它在I / O上被阻止,但它不能被中断(即使是其他线程),这使得该功能不适合那些不仅仅对接收到的消息做出反应的应用程序。

在典型的实际应用程序中,它需要处理来自多个来源的事件。例如,它可能需要键盘输入并将输入转换为通过DBUS发送的数据库查询。如果程序在DBUS事件上阻塞,则无法接受键盘输入。

函数本身不进行读/写操作,它是读/写过程的主循环调度部分。