On this page
8.9. Mutex-互斥支持
自 2.6 版起弃用:mutex模块已在 Python 3 中删除。
mutex模块定义了一个类,该类允许pass获取和释放锁进行互斥。它不需要(或暗示)threading或多任务处理,尽管它可能对这些目的很有用。
mutex模块定义以下类:
- 类别
mutex.
mutex
- 创建一个新的(解锁的)互斥锁。
互斥锁具有两种状态-“锁定”位和队列。当互斥锁未锁定时,队列为空。否则,队列包含零个或多个(function, argument)
对,它们表示 await 获取锁的函数(或方法)。当队列不为空时互斥锁被解锁时,第一个队列条目将被删除并对其function(argument)
对进行调用,这意味着它现在具有锁。
当然,没有暗示多线程-因此lock()的有趣接口,在获取锁定后便会调用一个函数。
8.9.1. 互斥对象
mutex个对象具有以下方法:
mutex.
test
( )- 检查互斥锁是否被锁定。
mutex.
testandset
( )- 测试并设置“原子”,如果未设置该锁,则获取该锁,然后返回
True
,否则返回False
。
- 测试并设置“原子”,如果未设置该锁,则获取该锁,然后返回
mutex.
lock
(* function , argument *)- 执行
function(argument)
,除非互斥锁已锁定。在锁定的情况下,将函数和参数放在队列中。有关在这种情况下何时执行function(argument)
的说明,请参见unlock()。
- 执行
mutex.
unlock
( )- 如果队列为空,则解锁互斥锁,否则执行队列中的第一个元素。