我正在使用套接字,异步事件驱动编程。我想发一条消息,一旦收到回复,再发一条消息。但我可能除了倾听之外还在做别的事。也就是说,我希望在socket.recv()实际接收到消息时被中断。
问题1:我如何让第3层中断第4层?即,我如何处理一个非空返回socket.recv()的事件,而不实际奉献"程序时间"来实际等待一个特定的时间来收听传入的消息?
在异步编程中,您不中断由消息触发的操作。所有操作都应该以短而快速的方式完成,这样您就可以每秒处理大量消息。这样,每个操作都是原子的,您就不会那么容易遭受任何竞争条件。如果您需要并行执行更复杂的处理,您可以将这些问题交给辅助线程。像twisted这样的库就是为这种用例准备的。
需要直接使用套接字吗?否则,我建议您查看优秀的Twisted python库。它为您处理所有异步工作,因此您可以专注于编写代码所需的处理程序和其他逻辑。Twisted相对容易入门。请在http://twistedmatrix.com/documents/current/core/howto/index.html查看一些示例。