mutex — Поддержка взаимного исключения
Устаревшее начиная с версии 2.6: Модуль mutex был удалён в Python 3.
Модуль mutex определяет класс, который позволяет реализовать взаимное исключение путём получения и освобождения блокировок. Он не требует (и не подразумевает) threading или многозадачности, хотя может быть полезен для этих целей.
Модуль mutex определяет следующий класс:
-
class mutex.mutex -
Создаёт новый (незаблокированный) мьютекс.
Мьютекс имеет два состояния — бит «заблокирован» и очередь. Когда мьютекс не заблокирован, очередь пуста. В противном случае, очередь содержит ноль или более
(function, argument)пар, представляющих функции (или методы), ожидающие получения блокировки. Когда мьютекс разблокирован, а очередь не пуста, первая запись в очереди удаляется, и еёfunction(argument)пара вызывается, что подразумевает, что она теперь имеет блокировку.Конечно, многопоточность не подразумевается — отсюда и необычный интерфейс для
lock(), где функция вызывается после получения блокировки.
1. Объекты Mutex
mutex объекты имеют следующие методы:
-
mutex.test() -
Проверяет, заблокирован ли мьютекс.
-
mutex.testandset() -
«Атомная» проверка и установка, получает блокировку, если она не установлена, и возвращает
True, в противном случае возвращаетFalse.
-
mutex.lock(function, argument) -
Выполняет
function(argument), если мьютекс не заблокирован. В случае блокировки функция и аргумент помещаются в очередь. См.unlock()для объяснения, когдаfunction(argument)выполняется в этом случае.
-
mutex.unlock() -
Разблокировать мьютекс, если очередь пуста, в противном случае выполнить первый элемент в очереди.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/mutex.html