mutex — módulo mutex

El módulo mutex proporciona una primitiva de exclusión mutua para proteger secciones críticas de código o datos compartidos del acceso concurrente por parte de una rutina de servicio de interrupción y el hilo principal.

La adquisición y liberación del bloqueo se realiza mediante un gestor de contexto (sentencia with), que se bloquea hasta que el mutex esté disponible. También se proporciona un método Mutex.test() no bloqueante.

Ejemplo:

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

class mutex.Mutex

Crea un objeto mutex desbloqueado.

release() None

Desbloquea el mutex. Lanza mutex.MutexException si el mutex no está bloqueado actualmente.

test() bool

Intenta adquirir el mutex de forma no bloqueante. Devuelve True si tiene éxito y False si el mutex ya está bloqueado.

Para adquirir el mutex de forma bloqueante, utiliza la instancia como gestor de contexto (sentencia with). El mutex se libera automáticamente al salir.

Excepciones

exception mutex.MutexException

Subclase de OSError. La lanza Mutex.release cuando el mutex ya está desbloqueado.