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( )- 如果队列为空,则解锁互斥锁,否则执行队列中的第一个元素。