mutex — módulo mutex

O módulo mutex fornece uma primitiva de exclusão mútua para proteger secções críticas de código ou dados partilhados de acesso concorrente por uma rotina de serviço de interrupção e a thread principal.

A aquisição e libertação do bloqueio é realizada através de um gestor de contexto (instrução with), que bloqueia até o mutex estar disponível. É também fornecido um método não bloqueante Mutex.test().

Exemplo:

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

class mutex.Mutex

Cria um objeto mutex desbloqueado.

release() None

Liberta o mutex. Lança mutex.MutexException se o mutex não estiver atualmente bloqueado.

test() bool

Tenta adquirir o mutex de forma não bloqueante. Devolve True em caso de sucesso e False se o mutex já estiver bloqueado.

Para adquirir o mutex de forma bloqueante, utilize a instância como gestor de contexto (instrução with). O mutex é libertado automaticamente na saída.

Exceções

exception mutex.MutexException

Subclasse de OSError. Lançada por Mutex.release quando o mutex já está desbloqueado.