菜鸟笔记
提升您的技术认知

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()要成对出现,否则会报错