3

当我试图使用 kill() 杀死一个 greenlet 时,“block”参数默认为 True,

Greenlet.kill(self, exception, block, timeout)

医生说:

如果 block 是True(默认值),请等到 greenlet 死亡或可选超时到期。如果 block 是False,当前的 greenlet 不是计划外的。

如何正确理解这一点?谢谢

4

1 回答 1

3

假设您有两个 greenletsAB.

1)在B你里面打电话A.kill(block=True)。在上下文切换发生后,Python 立即跳转到A并在A. A可能会处理它,它可能会跳转到其他地方,可能会在杀死时发生超时,等等。

2)在B你里面打电话A.kill(block=False)不会发生上下文切换。Bkill 后继续运行其他命令。但是,Kill 命令被安排触发,即一旦 Python 跳转到A它就会引发异常。

所以 AFAIK 的“阻止”只是意味着“现在进行切换”。

于 2014-01-21T08:33:33.550 回答