0

我正在使用套接字,异步事件驱动编程。我想发送一条消息,一旦我收到回复,再发送一条消息。但我可能在做一些除了听之外的事情。也就是说,我想在 socket.recv() 实际收到消息时被打断。

问题1:如何让layer 3中断layer 4?即如何处理非空返回 socket.recv() 的事件,而无需实际专用“程序时间”来实际等待特定时间来收听传入消息?

4

2 回答 2

0

在异步编程中,您不会中断由消息触发的操作。所有操作都应该以短而快的方式完成,以便您每秒可以处理大量消息。这样,每个操作都是原子的,您不会那么容易遭受任何竞争条件。如果您需要并行执行更复杂的处理,您可以将这些问题交给辅助线程。像twisted 这样的库就是为这样的用例准备的。

于 2013-05-06T13:00:08.410 回答
0

需要直接使用socket吗?否则,我会建议查看优秀的Twisted python 库。它为您处理所有异步工作,因此您可以专注于编写代码所需的处理程序和其他逻辑。Twisted 相对容易上手。查看http://twistedmatrix.com/documents/current/core/howto/index.html上的一些示例。

于 2013-05-06T13:05:26.077 回答