我对DBUS调用如何同步或安全有疑问?这更像是一个概念性问题。 我知道在SOCKET中不会出现这种情况。除非生产者完成其任务 - 在套接字/管道中的recvfrm和sendfrm(),否则消费者将被阻止。基本上,生产者和消费者工作在这里分别在套接字的两侧很好地定义。
这是一个场景。实际上,我在我的项目中使用QT-DBUS。但是,我认为这不是QT DBUS特有的。这个问题适用于任何DBUS。
有一个名为 - “GetTemperatureValue()”的函数。该类使用DBUS注册其服务 - “GetTemperatureValue()”。并且可以从DBUS客户端调用“GetTemperatureValue()”。现在,如果“GetTemperatureValue()”返回的值定期更改。假设计时器正在频繁地改变温度值。如果在客户端之间通过DBUS调用调用调用 - “GetTemperatureValue()”,那么它将不会获得垃圾值。由于没有保护,返回的温度值可能会被破坏。这里需要保护吗?如果需要保护,我们该怎么做?
这是一个qt-dbus示例 - http://www.tune2wizard.com/linux-qt-signals-and-slots-qt-d-bus/