python 递归锁
递归锁 其实就是维护一个计数器 比如A 线程 获得了锁 那么计数器会+1 释放的时候 为0 如果这个计数器不为0 那么其他的线程无法获得锁 只能慢慢的等待
import threading
import timeclass MyThread(threading.Thread):def actionA(self):r_lcok.acquire() #count=1print(self.name,"gotA",time.ctime())time.sleep(2)r_lcok.acquire() #count=2print(self.name, "gotB", time.ctime())time.sleep(1)r_lcok.release() #count=1r_lcok.release() #count=0def actionB(self):r_lcok.acquire()print(self.name, "gotB", time.ctime())time.sleep(2)r_lcok.acquire()print(self.name, "gotA", time.ctime())time.sleep(1)r_lcok.release()r_lcok.release()def run(self):self.actionA()self.actionB()if __name__ == '__main__':# A=threading.Lock()# B=threading.Lock()r_lcok=threading.RLock()L=[]for i in range(5):t=MyThread()t.start()L.append(t)for i in L:i.join()print("ending....")
Thread-1 gotA Sat Jan 26 11:24:35 2019
Thread-1 gotB Sat Jan 26 11:24:37 2019
Thread-1 gotB Sat Jan 26 11:24:38 2019
Thread-1 gotA Sat Jan 26 11:24:40 2019
Thread-3 gotA Sat Jan 26 11:24:41 2019
Thread-3 gotB Sat Jan 26 11:24:43 2019
Thread-3 gotB Sat Jan 26 11:24:44 2019
Thread-3 gotA Sat Jan 26 11:24:46 2019
Thread-5 gotA Sat Jan 26 11:24:47 2019
Thread-5 gotB Sat Jan 26 11:24:49 2019
Thread-5 gotB Sat Jan 26 11:24:50 2019
Thread-5 gotA Sat Jan 26 11:24:52 2019
Thread-4 gotA Sat Jan 26 11:24:53 2019
Thread-4 gotB Sat Jan 26 11:24:55 2019
Thread-4 gotB Sat Jan 26 11:24:56 2019
Thread-4 gotA Sat Jan 26 11:24:58 2019
Thread-2 gotA Sat Jan 26 11:24:59 2019
Thread-2 gotB Sat Jan 26 11:25:01 2019
Thread-2 gotB Sat Jan 26 11:25:02 2019
Thread-2 gotA Sat Jan 26 11:25:04 2019
ending....
python 递归锁相关推荐
- Python递归锁说明举例
"递归锁:RLock内部维护着一个Lock和一个counter变量,counter记录了acquire的次数,从而使得资源可以被多次acquire.直到一个线程所有的acquire都被rel ...
- python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...
GIL锁 计算机有4核,代表着同一时间,可以干4个任务.如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的.但是单核永远肯定时串行的,它肯定是串行 ...
- python 线程死锁_python线程死锁与递归锁
死锁现象 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待 ...
- 11.python并发入门(part4 死锁与递归锁)
一.关于死锁. 死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程. 下面是一个产生" ...
- python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)
什么是线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位.线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同 ...
- python基础--GIL全局解释器锁、Event事件、信号量、死锁、递归锁
ps:python解释器有很多种,最常见的就是C python解释器 GIL全局解释器锁: GIL本质上是一把互斥锁:将并发变成串行,牺牲效率保证了数据的安全 用来阻止同一个进程下的多个线程的同时执行 ...
- Python并发编程:多线程-死锁现象与递归锁
一 死锁现象 所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待 ...
- 学习笔记(28):Python网络编程并发编程-死锁与递归锁
立即学习:https://edu.csdn.net/course/play/24458/296445?utm_source=blogtoedu 1.死锁(Lock()的局限性) 知识点:Lock()只 ...
- python多线程之线程锁(Lock)和递归锁(RLock)实例
一.线程锁 Threading模块为我们提供了一个类,Threading.Lock锁.我们创建一个该类对象,在线程函数执行前,"抢占"该锁,执行完成后,"释放" ...
最新文章
- 解决TextView排版混乱或者自动换行的问题
- excel查找窗口被拉边上_你会做 Excel目录 吗?这个奇葩方法100%的人不知道
- console 程序随系统启动及隐藏当前程序窗口
- 【渝粤题库】国家开放大学2021春2108刑法学(2)题目
- 7套干货,Python常用技术学习知识图谱!!(史上最全,建议收藏)
- 复杂电网三相短路计算的matlab仿真,复杂电网三相短路计算的MATLAB仿真电力系统分析课设报告 - 图文...
- python os常用方法_python os模块常用方法
- mailR:利用R语言发邮件
- Rufus制作USB启动盘
- python移动文件_python 复制/移动文件
- 神经网络 手写数字识别,人工智能手写数字识别
- Python pyd文件的制作和编译,以及程序源代码的保护
- 【车间调度】改进的帝国企鹅算法求解车间调度问题【含Matlab源码 2041期】
- umi build打包之后部署报错
- Java类有个星号标记_Java中import包带*(星号)问题
- 时间格式化 几分钟前 几小时前 几天前
- 怎么用计算机算三角函数值,如何在手机计算器中由三角函数值求角度
- CSS中div的边框
- 财经类学校考研计算机,21考研,财经类性价比超高的院校推荐
- 二维卷积网络函数con2d
热门文章
- TypeError: create_target_machine() got an unexpected keyword argument ‘jitdebug‘解决方案
- 学习python遇到的一些有趣点(每日更新)
- Boot Hill 布特山
- 游戏王血计算机,【统计】历代主角控血一览
- IDEA安装JRebel插件教程
- 去除List集合中的重复元素,并保持原有数据的初始顺序
- nginx做代理服务
- 中文分词第三方库_Python计算生态jieba库和random库的综合运用之爬山篇
- 将dll制作成控件_案例丨首例将影视作品制作成网络图片集被判侵权案 二审维持原判...
- mysql查询的是问号_MySQL客户端查询中文显示为问号(linux) | 学步园