使用D-Bus异步方法调用在python中的线程安全性

时间:2010-06-15 11:15:38

标签: python thread-safety dbus

我编写了一个python类,它使用D-Bus进行异步方法调用。当我的reply_handler被调用时,它将数据存储在列表中。此列表可以由另一个类方法同时使用。它是安全的还是我只能使用像Queue类这样的同步数据结构?

1 个答案:

答案 0 :(得分:0)

如果不修改回调上下文之外的列表,则不一定需要同步 - 您只需要知道列表对象的状态是易失性的。

如果必须在回调处理程序以及主执行上下文(或其他线程等)中修改列表,那么是的,您将需要同步。

Python synchronized Queue自然适用于消息泵 - 允许您按照事件在您自己的某个上下文中的顺序执行操作。这有利于代码的简单性和可读性,因为主要的状态更改更容易跟踪。回调通常不应该太复杂,因为调用回调的外部上下文不应该(也可能不)必须处理从代码中引发的异常。还有潜在的时序考虑因素 - 回调将阻止异步发射器的上下文 - 因此保持处理程序简短和甜蜜也很好。