Lock和Rlock
- Lock和Rlock 推荐度:
- 相关推荐
Lock和Rlock
Lock.acquire([blocking])
获取一把锁,阻塞的或者非阻塞的。
当调用时blocking参数设置为True(默认值),将阻塞直至锁变成unblocked,然后设置它的状态为locked并返回True。
当调用时blocking参数设置为False,将不会阻塞。
Lock.release()
释放一把锁。
当锁是locked时,重置它为unlocked,然后返回。如果存在其他阻塞的线程正在等待锁变成unblocked状态,只会允许它们中的一个继续。
在一把没有锁住的锁上调用时,引发一个ThreadError 。
Lock对象
threading.Lock() 加载线程的锁对象,是一个基本的锁对象,一次只能一个锁定,其余锁请求,需等待锁释放后才能获取
RLock对象
一个可重入所示一个同步原语,它可以被相同的线程获得多次。 当线程在获得加锁之后,又需要共享资源,需要再次加锁。这时就可以使用RLock。
注意,acquire()和release()要成对出现,否则会报错