Diciamo che sto usando un gestore signal
per gestire un timer intervallo.è l'assegnazione della variabile python atomica?
def _aHandler(signum, _):
global SomeGlobalVariable
SomeGlobalVariable=True
Posso impostare SomeGlobalVariable
senza preoccuparsi che, in uno scenario improbabile che, mentre l'impostazione SomeGlobalVariable
(vale a dire il Python VM stava eseguendo bytecode per impostare la variabile), che l'assegnazione all'interno del gestore di segnale si romperà qualcosa? (Vale a dire metastabile Stato)
Aggiornamento: Sono specificamente interessati nel caso in cui un "assegnazione composta" è fatta al di fuori del gestore.
(forse sto pensando troppo "basso livello" e questo è tutto curato in Python ... provenienti da una Sistemi embedded fondo, non ho questo tipo di impulsi di tanto in tanto)
ma che dire di "assegnazione composta" al di fuori del gestore? – jldupont
Se il gestore esegue (es.) 'Gvar = 3',' gvar' è inizialmente 7, e il codice al di fuori del gestore (es.) 'Gvar + = 2', quindi' gvar' potrebbe essere o 3, 5, o 9, a seconda di come le operazioni finiscono interlacciate. Questo è tecnicamente "sicuro" (il che significa che il processo non si bloccherà ;-) ma improbabile che sia semanticamente OK. –
Dove è specificato? -1 per mancanza di riferimento autorevole. – rightfold