2010-06-15 28 views

回答

0

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

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

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

+0

谢谢。在我的情况下修改列表以外是通常的。所以我决定只使用Queue将收到的数据存储在reply_handler中。程序的主循环定期检查这个队列并安全地将它的内容添加到列表中。 – chatbot 2010-06-15 13:52:33