Python的线程相关概念

Lock , 普通锁,调用acquired, 取得锁。任何线程可以调用release释放锁。 在锁未释放前调用acquired操作被block

RLock, 区别于Lock是, 如果重复调用acquired方法是同一个线程不发生block.

 

Semaphore , 信号量

BoundedSemaphore ,和信号量的区别是, 如果释放后信号量,大于初始值抛出异常ValueError

 

Condition, 需要和Lock结合使用, 支持wait和notify 操作.

 

Block Release
threading.Lock 创建普通锁 Y any thread
threading.RLock 重入锁 lock线程可以重入 lock thread
Semaphore 信号量 <=0 block
BoundedSemaphore 信号量 信号量大于初始值时Raise ValueError
Condition 条件变量 支持:wait, notify, acquire, release
0. Condition总是和Lock结合使用
1. wait前需要先调用acquire, wait成功自动释放锁
2. notify 本身不会释放锁,需要程序调用release

 

你可能感兴趣的:(thread,python)