mutex — modulo mutex

Il modulo mutex fornisce una primitiva di mutua esclusione per proteggere le sezioni critiche di codice o i dati condivisi dall’accesso concorrente da parte di una routine di servizio di interrupt e del thread principale.

L’acquisizione e il rilascio del lock vengono eseguiti tramite un context manager (istruzione with), che si blocca finché il mutex non è disponibile. È fornito anche un metodo non bloccante Mutex.test().

Esempio:

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

class mutex.Mutex

Crea un oggetto mutex sbloccato.

release() None

Sblocca il mutex. Solleva mutex.MutexException se il mutex non è attualmente bloccato.

test() bool

Tenta di acquisire il mutex in modo non bloccante. Restituisce True in caso di successo e False se il mutex è già bloccato.

Per acquisire il mutex in modo bloccante, usa l’istanza come context manager (istruzione with). Il mutex viene rilasciato automaticamente all’uscita.

Eccezioni

exception mutex.MutexException

Sottoclasse di OSError. Sollevata da Mutex.release quando il mutex è già sbloccato.