8.9. mutex — 互斥支持 — Python 文档

来自菜鸟教程
Python/docs/2.7/library/mutex
跳转至:导航、​搜索

8.9. 互斥体 — 互斥支持

自 2.6 版起已弃用:mutex 模块已在 Python 3 中删除。


mutex 模块定义了一个允许通过获取和释放锁实现互斥的类。 它不需要(或暗示)线程 或多任务处理,尽管它可能对这些目的有用。

mutex 模块定义了以下类:

class mutex.mutex

创建一个新的(解锁的)互斥锁。

互斥锁有两部分状态——“锁定”位和队列。 当互斥锁未锁定时,队列为空。 否则,队列包含零个或多个 (function, argument) 对,表示等待获取锁的函数(或方法)。 当互斥锁被解锁而队列不为空时,第一个队列条目将被删除并调用它的 function(argument) 对,这意味着它现在拥有锁。

当然,没有暗示多线程——因此 lock() 的有趣接口,一旦获得锁就会调用一个函数。

8.9.1. 互斥对象

mutex 对象有以下方法:

mutex.test()
检查互斥锁是否被锁定。
mutex.testandset()
“Atomic”test-and-set,如果没有设置就抢锁,返回True,否则返回False
mutex.lock(function, argument)
执行 function(argument),除非互斥锁被锁定。 在它被锁定的情况下,将函数和参数放在队列中。 请参阅 unlock() 以了解在这种情况下何时执行 function(argument)
mutex.unlock()
如果队列为空,则解锁互斥锁,否则执行队列中的第一个元素。