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.MutexException aus, wenn der Mutex aktuell nicht gesperrt ist.

test() bool

Versucht, den Mutex auf nicht blockierende Weise zu belegen. Gibt bei Erfolg True und False zurü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 von Mutex.release ausgelöst, wenn der Mutex bereits entsperrt ist.