mutex — modulul mutex

Modulul mutex oferă o primitivă de excludere mutuală pentru protejarea secțiunilor critice de cod sau a datelor partajate de accesul concurent al unei rutine de tratare a întreruperilor și al firului principal.

Achiziția și eliberarea blocării se realizează printr-un manager de context (instrucțiunea with), care se blochează până când mutexul devine disponibil. Este furnizată și o metodă neblocantă Mutex.test().

Exemplu:

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 – obiect mutex

class mutex.Mutex

Creează un obiect mutex deblocat.

release() None

Deblochează mutexul. Generează mutex.MutexException dacă mutexul nu este blocat în prezent.

test() bool

Încearcă să achiziționeze mutexul într-un mod neblocant. Returnează True în caz de succes și False dacă mutexul este deja blocat.

Pentru a achiziționa mutexul într-un mod blocant, folosiți instanța ca manager de context (instrucțiunea with). Mutexul este eliberat automat la ieșire.

Excepții

exception mutex.MutexException

Subclasă a OSError. Generată de Mutex.release atunci când mutexul este deja deblocat.