mutex — mutex module

Модуль mutex надає примітив взаємного виключення для захисту критичних секцій коду або спільних даних від одночасного доступу підпрограми обробки переривань та основного потоку.

Захоплення та звільнення блокування виконується через менеджер контексту (оператор with), який блокується до тих пір, поки м’ютекс не стане доступним. Також надається неблокуючий метод Mutex.test().

Приклад:

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

class mutex.Mutex

Створює розблокований об’єкт м’ютекса.

release() None

Розблоковує м’ютекс. Викидає mutex.MutexException, якщо м’ютекс наразі не заблокований.

test() bool

Намагається захопити м’ютекс без блокування. Повертає True в разі успіху та False, якщо м’ютекс вже заблокований.

Для захоплення м’ютекса у блокуючому режимі використовуйте екземпляр як менеджер контексту (оператор with). М’ютекс звільняється автоматично при виході.

Винятки

exception mutex.MutexException

Підклас OSError. Викидається Mutex.release, коли м’ютекс вже розблокований.