Spec-Zone.ru › Python 2.7

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API