Digamos que estoy usando un controlador signal
para manejar un temporizador de intervalo.es la asignación de la variable python atómica?
def _aHandler(signum, _):
global SomeGlobalVariable
SomeGlobalVariable=True
¿Puedo establecer SomeGlobalVariable
sin preocuparse de que, en un escenario poco probable que, si bien el establecimiento SomeGlobalVariable
(es decir, la máquina virtual de Python se ejecuta el código de bytes para establecer la variable), que la asignación dentro del manejador de la señal va a romper algo? (Es decir meta-estable estado)
actualización: Estoy interesado específicamente en el caso donde se realiza una "asignación de compuesto" fuera del manipulador.
(tal vez estoy pensando demasiado "bajo nivel" y todo esto es atendido en Python ... con una formación en sistemas integrados, tengo este tipo de impulsos de vez en cuando)
pero ¿qué pasa con la "asignación compuesta" fuera del controlador? – jldupont
Si el manejador (por ej.) 'Gvar = 3',' gvar' es inicialmente 7, y el código fuera del manejador (ej.) 'Gvar + = 2', entonces' gvar' podría terminar como 3, 5, o 9, dependiendo de cómo las operaciones terminan intercaladas. Eso es técnicamente "seguro" (es decir, el proceso no se bloqueará ;-) pero es poco probable que esté semánticamente bien. –
¿Dónde se especifica? -1 por falta de referencia autorizada. – rightfold