【发布时间】:2010-07-23 16:58:16
【问题描述】:
我的主要问题是线程锁对象是否创建原子锁?在模块文档中并没有说锁是原子的。在 python 的互斥锁文档中,它确实说互斥锁是原子的,但似乎我在某处读到实际上不是。我想知道是否有人可以给我一些关于这个问题的见解。我应该使用哪个锁。我目前正在使用 python 2.4 运行我的脚本
【问题讨论】:
标签: python multithreading locking mutex
我的主要问题是线程锁对象是否创建原子锁?在模块文档中并没有说锁是原子的。在 python 的互斥锁文档中,它确实说互斥锁是原子的,但似乎我在某处读到实际上不是。我想知道是否有人可以给我一些关于这个问题的见解。我应该使用哪个锁。我目前正在使用 python 2.4 运行我的脚本
【问题讨论】:
标签: python multithreading locking mutex
如果不是原子的,任何性质的锁都将毫无用处 - 锁的全部意义在于允许更高级别的原子操作。
所有线程的同步对象(锁、rlock、信号量、有界信号量)都使用原子指令,互斥体也是如此。
您应该使用threading,因为mutex 实际上在未来已被弃用(并在 Python 3 中被删除)。
【讨论】:
mutex 模块的更大理由:它的锁是线程无知的。它们用于使用sched 模块的单线程程序。从本质上讲,它们毫无用处。