threading.Lock()
|
|
总结
<table>
<tr>
<td> wait参数</td> <td> lock处在unlocked状态 </td> <td> lock处在locked状态 </td>
</tr><tr>
<td> 不设置或者 True </td><td> True </td> <td> 等待直到unlocked,返回True</td>
</tr><tr>
<td> False </td><td> True </td> <td> 立即返回 False </td>
</tr>
</table>
|
|
threading.RLock(verbose=None) #可重入锁(reentrant lock),
|
|
Lock和RLock的区别
- Lock能够由非持有锁的线程release,但是RLock不可以。
- Lock不能够重入(wait=True则死锁,wait=False则返回False), 但是RLock可以重入多次。
- Lock的acquire只返回 True 或者 False; Rlock重复获取锁时返回 1。
- 对一个unlocked状态的lock调用 release 引起thread.error异常; RLock 则引起RuntimeError异常。
threading.Condition([lock])
|
|
令人感兴趣的是,由于Lock与RLock的不同,那么传入一个Lock与使用一个RLock作为Condition的锁时, 其表现究竟如何。
threading.Semaphore(value=1)
|
|
threading.Event
|
|