0

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

4

1 回答 1

0

如果您不修改回调上下文之外的列表,那么您不一定需要同步 - 您只需要注意列表对象的状态是可变的。

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

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

于 2010-06-15T12:38:08.173 回答