Let's say I am using a signal
handler for handling an interval timer.
def _aHandler(signum, _):
global SomeGlobalVariable
SomeGlobalVariable=True
Can I set SomeGlobalVariable
without worrying that, in an unlikely scenario that whilst setting SomeGlobalVariable
(i.e. the Python VM was executing bytecode to set the variable), that the assignment within the signal handler will break something? (i.e. meta-stable state)
Update: I am specifically interested in the case where a "compound assignment" is made outside of the handler.
(maybe I am thinking too "low level" and this is all taken care of in Python... coming from an Embedded Systems background, I have these sorts of impulses from time to time)
Simple assignment to simple variables is "atomic" AKA threadsafe (compound assignments such as +=
or assignments to items or attributes of objects need not be, but your example is a simple assignment to a simple, albeit global, variable, thus safe).