递归锁 其实就是维护一个计数器 比如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 递归锁相关推荐

  1. Python递归锁说明举例

    "递归锁:RLock内部维护着一个Lock和一个counter变量,counter记录了acquire的次数,从而使得资源可以被多次acquire.直到一个线程所有的acquire都被rel ...

  2. python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...

    GIL锁 ​ 计算机有4核,代表着同一时间,可以干4个任务.如果单核cpu的话,我启动10个线程,我看上去也是并发的,因为是执行了上下文的切换,让看上去是并发的.但是单核永远肯定时串行的,它肯定是串行 ...

  3. python 线程死锁_python线程死锁与递归锁

    死锁现象 所谓死锁: 是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待 ...

  4. 11.python并发入门(part4 死锁与递归锁)

    一.关于死锁. 死锁,就是当多个进程或者线程在执行的过程中,因争夺共享资源而造成的一种互相等待的现象,一旦产生了死锁,不加人工处理,程序会一直等待下去,这也被称为死锁进程. 下面是一个产生" ...

  5. python 多线程讲解(如何实现多线程,递归锁,互斥锁,信号量,事件等)

    什么是线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位.线程自己不拥有系统资源,只拥有一点儿在运行中必不可少的资源,但它可与同 ...

  6. python基础--GIL全局解释器锁、Event事件、信号量、死锁、递归锁

    ps:python解释器有很多种,最常见的就是C python解释器 GIL全局解释器锁: GIL本质上是一把互斥锁:将并发变成串行,牺牲效率保证了数据的安全 用来阻止同一个进程下的多个线程的同时执行 ...

  7. Python并发编程:多线程-死锁现象与递归锁

    一 死锁现象 所谓死锁:是指两个或两个以上的进程或线程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待 ...

  8. 学习笔记(28):Python网络编程并发编程-死锁与递归锁

    立即学习:https://edu.csdn.net/course/play/24458/296445?utm_source=blogtoedu 1.死锁(Lock()的局限性) 知识点:Lock()只 ...

  9. python多线程之线程锁(Lock)和递归锁(RLock)实例

    一.线程锁 Threading模块为我们提供了一个类,Threading.Lock锁.我们创建一个该类对象,在线程函数执行前,"抢占"该锁,执行完成后,"释放" ...

最新文章

  1. 解决TextView排版混乱或者自动换行的问题
  2. excel查找窗口被拉边上_你会做 Excel目录 吗?这个奇葩方法100%的人不知道
  3. console 程序随系统启动及隐藏当前程序窗口
  4. 【渝粤题库】国家开放大学2021春2108刑法学(2)题目
  5. 7套干货,Python常用技术学习知识图谱!!(史上最全,建议收藏)
  6. 复杂电网三相短路计算的matlab仿真,复杂电网三相短路计算的MATLAB仿真电力系统分析课设报告 - 图文...
  7. python os常用方法_python os模块常用方法
  8. mailR:利用R语言发邮件
  9. Rufus制作USB启动盘
  10. python移动文件_python 复制/移动文件
  11. 神经网络 手写数字识别,人工智能手写数字识别
  12. Python pyd文件的制作和编译,以及程序源代码的保护
  13. 【车间调度】改进的帝国企鹅算法求解车间调度问题【含Matlab源码 2041期】
  14. umi build打包之后部署报错
  15. Java类有个星号标记_Java中import包带*(星号)问题
  16. 时间格式化 几分钟前 几小时前 几天前
  17. 怎么用计算机算三角函数值,如何在手机计算器中由三角函数值求角度
  18. CSS中div的边框
  19. 财经类学校考研计算机,21考研,财经类性价比超高的院校推荐
  20. 二维卷积网络函数con2d

热门文章

  1. TypeError: create_target_machine() got an unexpected keyword argument ‘jitdebug‘解决方案
  2. 学习python遇到的一些有趣点(每日更新)
  3. Boot Hill 布特山
  4. 游戏王血计算机,【统计】历代主角控血一览
  5. IDEA安装JRebel插件教程
  6. 去除List集合中的重复元素,并保持原有数据的初始顺序
  7. nginx做代理服务
  8. 中文分词第三方库_Python计算生态jieba库和random库的综合运用之爬山篇
  9. 将dll制作成控件_案例丨首例将影视作品制作成网络图片集被判侵权案 二审维持原判...
  10. mysql查询的是问号_MySQL客户端查询中文显示为问号(linux) | 学步园