1.Lock
Lock的概念很简单,就不多解释了
锁有两种状态:被锁(locked)和没有被锁(unlocked)。拥有acquire()和release()两种方法,并且遵循一下的规则:
- 如果一个锁的状态是unlocked,调用acquire()方法改变它的状态为locked
- 如果一个锁的状态是locked,acquire()方法将会阻塞,直到另一个线程调用release()方法释放了锁;
- 如果一个锁的状态是unlocked调用release()会抛出RuntimeError异常;
- 如果一个锁的状态是locked,调用release()方法改变它的状态为unlocked。
API 所有的操作都是atomically.
- Lock.acquire([blocking])
Lock.release()
参数 blocking:
True(the default):一直阻塞直到锁被realse.
- False:如果锁被占用,不阻塞立马返回false
ps:这是python2.7的Lock.acquire(), python3.x的Lock.acquire(blocking=True, timeout=-1)多了一个超时设置。
一个简单的小例子:
import threading
import time
class MyThread(threading.Thread):
def run(self):