假设我正在使用一个 signal
处理程序来处理时间间隔计时器。
def _aHandler(signum, _):
global SomeGlobalVariable
SomeGlobalVariable=True
如果我设置 SomeGlobalVariable
,会不会有问题,假设在设置 SomeGlobalVariable
时(即 Python VM 执行 bytecode 来设置变量),信号处理程序中的赋值操作可能会导致某些问题?(即 元稳态)
更新: 我特别关注在处理程序之外进行“复合赋值”的情况。
(也许我想得太“底层”了,这个问题在 Python 中已经解决...我来自嵌入式系统背景,有时会有这种冲动)
gvar = 3
,并且在处理程序外部的代码执行(例如)gvar += 2
,那么gvar
最初为7,然后gvar
可能最终成为3、5或9,这取决于操作如何交错。从技术上讲,这是“安全”的(意思是,进程不会崩溃;-),但语义上不太正确。 - Alex Martelli