2

我刚刚了解到 Twisted 使用单个线程来处理事件。因此,您必须设计非阻塞事件处理程序,理想情况下它们必须在触发另一个事件之前完成。要求使用延迟对象实现阻塞例程。

现在,假设您正在处理一个事件,并且另一个事件被激活。

对这种情况的合理反应是将新事件排队并等到正在运行的处理程序完成。

这是 Twisted 引擎内部发生的事情吗?

4

1 回答 1

2

您误解了操作系统如何将事件传递给 Twisted。在大多数 API 中,您必须主动将事件从某种队列中拉出,当它们发生时您不会立即收到警报。在通知确实立即发生的情况下(来自信号或来自另一个线程),Twisted 将它们排入主线程中。

因此,从您作为使用 Twisted 的程序员的角度来看,您的问题的答案只是“是”,但 Stack Overflow 让我投入了更多的话,以便将其视为有效答案:)。

于 2013-03-05T23:00:29.587 回答