2

我对如何同步 DBUS 调用或使其安全有疑问?这更像是一个概念问题。我知道这种情况不会出现在 SOCKET 中。除非生产者完成其任务,否则消费者会被阻塞 - 套接字/管道中的 recvfrm 和 sendfrm()。基本上,生产者和消费者工作分别在套接字的两侧进行了很好的定义。

这是一个场景。实际上,我在我的项目中使用 QT-DBUS。但是,我认为这并不特定于 QT DBUS。这个问题适用于任何 DBUS。

有一个名为“GetTemperatureValue()”的函数。此类通过 DBUS 注册其服务 - “GetTemperatureValue()”。并且“GetTemperatureValue()”可以从 DBUS 客户端调用。现在,如果“GetTemperatureValue()”返回的值定期更改。假设一个计时器非常频繁地改变温度值。如果在客户端通过 DBUS 调用调用调用“GetTemperatureValue()”之间,那么它不会得到一个垃圾值。由于没有保护,返回的温度值可能已损坏。这里需要保护吗?如果需要保护,我们该怎么做?

这也是一个 qt-dbus 示例 - http://www.tune2wizard.com/linux-qt-signals-and-slots-qt-d-bus/

4

0 回答 0