2010-07-23 52 views
7

我的主要问题是它的线程锁对象创建原子锁吗?它并不是说模块文档中的锁是原子的。在pythons互斥体文档中,它确实表示互斥锁是原子的,但它似乎是在某处读取的,实际上它不是。我想知道如果有人能够给我一些关于这个主题的见解。我应该使用哪个锁。锁的全部要点是允许更高级别的原子操作 - 我使用python的任何性质的2.4互斥锁与线程锁。使用哪个?

回答

13

锁将是相当无用的,如果他们不是原子当前运行我的脚本。

所有线程的同步对象(锁,rlocks,信号量,boundedsemaphores)利用原子指令,因为这样做互斥。

应该使用threading,因为mutex实际上已被弃用(并在Python 3中删除)。

+0

谢谢,我只是想仔细检查。 – Richard 2010-07-23 17:12:41

+1

和更大的理由不使用'mutex'模块:它的锁是线程无知。它们用于使用'sched'模块的单线程程序。基本上,它们是无用的。 – 2010-07-23 18:10:47

+0

@Thomas武泰,我认为,这就是为什么他们不再保持互斥模块在Python 3 – Richard 2010-07-23 19:01:13