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 ( )

    • 如果队列为空,则解锁互斥锁,否则执行队列中的第一个元素。