mutex — module mutex

Le module mutex fournit une primitive d’exclusion mutuelle pour protéger les sections critiques de code ou les données partagées contre les accès concurrents par une routine de service d’interruption et le thread principal.

L’acquisition et la libération du verrou s’effectuent via un gestionnaire de contexte (instruction with), qui bloque jusqu’à ce que le mutex soit disponible. Une méthode Mutex.test() non bloquante est également fournie.

Exemple

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()

classe Mutex – objet mutex

class mutex.Mutex

Crée un objet mutex déverrouillé.

release() None

Déverrouille le mutex. Lève mutex.MutexException si le mutex n’est pas actuellement verrouillé.

test() bool

Tente d’acquérir le mutex de manière non bloquante. Renvoie True en cas de succès et False si le mutex est déjà verrouillé.

Pour acquérir le mutex de manière bloquante, utilisez l’instance comme gestionnaire de contexte (instruction with). Le mutex est libéré automatiquement à la sortie.

Exceptions

exception mutex.MutexException

Sous-classe de OSError. Levée par Mutex.release lorsque le mutex est déjà déverrouillé.