Załóżmy, że używam programu obsługi signal
do obsługi interwalometru.jest przypisanie zmiennej Pythona atomowej?
def _aHandler(signum, _):
global SomeGlobalVariable
SomeGlobalVariable=True
mogę ustawić SomeGlobalVariable
bez obawy, że w mało prawdopodobnym scenariuszu, że podczas ustawiania SomeGlobalVariable
(czyli Python VM został wykonującego kodu bajtowego ustawić zmienną), że przypisanie w ramach obsługi sygnału pęknie coś? (Tj metastabilna stan)
Aktualizacja: Istnieje szczególnie zainteresowany w przypadku, gdy „przypisanie związek” jest wykonany na zewnątrz uchwytu.
(może myślę zbyt „niski poziom”, a to wszystko jest załatwione w Pythonie ... pochodzące z Embedded Systems tle, mam tego rodzaju impulsów od czasu do czasu)
ale co z "przypisaniem złożonym" poza obsługą? – jldupont
Jeśli handler ma (np.) 'Gvar = 3',' gvar' ma początkowo 7, a kod spoza programu obsługi (np.) 'Gvar + = 2', wtedy' gvar' może skończyć jako 3, 5 lub 9, w zależności od tego, w jaki sposób operacje zostaną przeplatane. Jest to technicznie "bezpieczne" (co oznacza, że proces się nie zawiesza ;-), ale mało prawdopodobne, aby był semantycznie w porządku. –
Gdzie to określono? -1 z powodu braku autorytatywnego odniesienia. – rightfold