mutex — mutex-Modul¶
Das Modul mutex stellt ein Primitiv zur gegenseitigen Ausgrenzung bereit, um kritische Codeabschnitte oder gemeinsam genutzte Daten vor gleichzeitigem Zugriff durch eine Interrupt-Service-Routine und den Haupt-Thread zu schützen.
Das Belegen und Freigeben der Sperre erfolgt über einen Kontextmanager (with-Anweisung), der blockiert, bis der Mutex verfügbar ist. Außerdem wird eine nicht blockierende Mutex.test()-Methode bereitgestellt.
Beispiel:
from mutex import Mutex
mtx = Mutex()
# Acquire for a critical section (blocks if already held).
with mtx:
# ... protected code, e.g. shared buffer access ...
pass
# Or try without blocking.
if mtx.test():
try:
# ... protected code ...
pass
finally:
mtx.release()
class Mutex – mutex-Objekt¶
- class mutex.Mutex¶
Erstellt ein nicht gesperrtes Mutex-Objekt.
- release() None¶
Gibt den Mutex frei. Löst
mutex.MutexExceptionaus, wenn der Mutex aktuell nicht gesperrt ist.
- test() bool¶
Versucht, den Mutex auf nicht blockierende Weise zu belegen. Gibt bei Erfolg
TrueundFalsezurück, wenn der Mutex bereits gesperrt ist.Um den Mutex auf blockierende Weise zu belegen, verwenden Sie die Instanz als Kontextmanager (
with-Anweisung). Der Mutex wird beim Verlassen automatisch freigegeben.
Ausnahmen¶
- exception mutex.MutexException¶
Unterklasse von
OSError. Wird vonMutex.releaseausgelöst, wenn der Mutex bereits entsperrt ist.