mutex — módulo mutex

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

A aquisição e a liberação do bloqueio são feitas por meio de um gerenciador de contexto (instrução with), que bloqueia até que o mutex esteja disponível. Um método não bloqueante Mutex.test() também é fornecido.

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

class Mutex – objeto mutex

class mutex.Mutex

Cria um objeto mutex desbloqueado.

release() None

Desbloqueia o mutex. Lança mutex.MutexException se o mutex não estiver bloqueado no momento.

test() bool

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

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

Exceções

exception mutex.MutexException

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