mutex — moduł mutex

Moduł mutex dostarcza prymityw wzajemnego wykluczania do ochrony sekcji krytycznych kodu lub współdzielonych danych przed równoczesnym dostępem ze strony procedury obsługi przerwania i wątku głównego.

Pozyskiwanie i zwalnianie blokady odbywa się za pomocą menedżera kontekstu (instrukcja with), który blokuje do czasu, aż mutex stanie się dostępny. Dostępna jest również nieblokująca metoda Mutex.test().

Przykład:

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

klasa Mutex – obiekt mutex

class mutex.Mutex

Tworzy odblokowany obiekt mutex.

release() None

Odblokowuje mutex. Zgłasza mutex.MutexException, jeśli mutex nie jest obecnie zablokowany.

test() bool

Próbuje pozyskać mutex w sposób nieblokujący. Zwraca True w przypadku powodzenia oraz False, jeśli mutex jest już zablokowany.

Aby pozyskać mutex w sposób blokujący, użyj instancji jako menedżera kontekstu (instrukcja with). Mutex jest zwalniany automatycznie przy wyjściu.

Wyjątki

exception mutex.MutexException

Podklasa OSError. Zgłaszana przez Mutex.release, gdy mutex jest już odblokowany.