课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
锁的应用在线程安全领域是非常重要的,而今天我们就通过案例分析来了解一下,python线程安全常见锁的类型。
1、RLock()递归锁
基本介绍
递归锁是同步锁的一个升级版本,在同步锁的基础上可以做到连续重复使用多次acquire()后再重复使用多次release()的操作,但是一定要注意加锁次数和解锁次数必须一致,否则也将引发死锁现象。
2、Condition()条件锁
基本介绍
条件锁是在递归锁的基础上增加了能够暂停线程运行的功能。并且我们可以使用wait()与notify()来控制线程执行的个数。
注意:条件锁可以自由设定一次放行几个线程。
3、Event()事件锁
基本介绍
事件锁是基于条件锁来做的,它与条件锁的区别在于一次只能放行全部,不能放行任意个数量的子线程继续运行。
我们可以将事件锁看为红绿灯,当红灯时所有子线程都暂停运行,并进入“等待”状态,当绿灯时所有子线程都恢复“运行”。
4、Semaphore()信号量锁
基本介绍
信号量锁也是根据条件锁来做的,它与条件锁和事件锁的区别如下:
条件锁:一次可以放行任意个处于“等待”状态的线程
事件锁:一次可以放行全部的处于“等待”状态的线程
信号量锁:通过规定,成批的放行特定个处于“上锁”状态的线程
锁的应用在线程安全领域是非常重要的,而今天我们就通过案例分析来了解一下,python线程安全常见锁的类型。
1、RLock()递归锁
基本介绍
递归锁是同步锁的一个升级版本,在同步锁的基础上可以做到连续重复使用多次acquire()后再重复使用多次release()的操作,但是一定要注意加锁次数和解锁次数必须一致,否则也将引发死锁现象。
2、Condition()条件锁
基本介绍
条件锁是在递归锁的基础上增加了能够暂停线程运行的功能。并且我们可以使用wait()与notify()来控制线程执行的个数。
注意:条件锁可以自由设定一次放行几个线程。
3、Event()事件锁
基本介绍
事件锁是基于条件锁来做的,它与条件锁的区别在于一次只能放行全部,不能放行任意个数量的子线程继续运行。
我们可以将事件锁看为红绿灯,当红灯时所有子线程都暂停运行,并进入“等待”状态,当绿灯时所有子线程都恢复“运行”。
4、Semaphore()信号量锁
基本介绍
信号量锁也是根据条件锁来做的,它与条件锁和事件锁的区别如下:
条件锁:一次可以放行任意个处于“等待”状态的线程
事件锁:一次可以放行全部的处于“等待”状态的线程
信号量锁:通过规定,成批的放行特定个处于“上锁”状态的线程