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, коли м’ютекс вже розблокований.