Документация Python неофициальный перевод

mutex.md

42 строк · 3.7 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/mutex.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 8.9. [`mutex`](https://python-all.ru/2.7/library/mutex.html#module-mutex) – Поддержка взаимного исключения89Устарело с версии 2.6: Модуль [`mutex`](https://python-all.ru/2.7/library/mutex.html#module-mutex) удалён в Python 3.1011Модуль [`mutex`](https://python-all.ru/2.7/library/mutex.html#module-mutex) определяет класс, который обеспечивает взаимное исключение через захват и освобождение блокировок. Он не требует (и не подразумевает) [`threading`](https://python-all.ru/2.7/library/threading.html#module-threading) или многозадачности, хотя может быть полезен для этих целей.1213Модуль [`mutex`](https://python-all.ru/2.7/library/mutex.html#module-mutex) определяет следующий класс:1415#### `class mutex.mutex`1617Создаёт новый (разблокированный) мьютекс.1819Мьютекс имеет две части состояния – бит «заблокировано» и очередь. Когда мьютекс не заблокирован, очередь пуста. В противном случае очередь содержит ноль или более пар `(function, argument)`, представляющих функции (или методы), ожидающие захвата блокировки. Когда мьютекс разблокируется, пока очередь не пуста, первый элемент очереди удаляется и вызывается его пара `function(argument)`, что означает, что теперь он владеет блокировкой.2021Разумеется, многопоточность не подразумевается – отсюда забавный интерфейс для [`lock()`](https://python-all.ru/2.7/library/mutex.html#mutex.mutex.lock), где функция вызывается после захвата блокировки.2223## 8.9.1. Объекты мьютекса2425Объекты [`mutex`](https://python-all.ru/2.7/library/mutex.html#mutex.mutex) имеют следующие методы:2627#### `mutex.test()`2829Проверяет, заблокирован ли мьютекс.3031#### `mutex.testandset()`3233«Атомарная» проверка-и-установка: захватывает блокировку, если она не установлена, и возвращает `True`, в противном случае возвращает `False`.3435#### `mutex.lock(function, argument)`3637Выполняет `function(argument)`, если мьютекс не заблокирован. Если он заблокирован, помещает функцию и аргумент в очередь. См. [`unlock()`](https://python-all.ru/2.7/library/mutex.html#mutex.mutex.unlock) для объяснения, когда в этом случае выполняется `function(argument)`.3839#### `mutex.unlock()`4041Разблокирует мьютекс, если очередь пуста, иначе выполняет первый элемент в очереди.42