zoukankan      html  css  js  c++  java
  • 死锁与递归锁

    递归锁

    一个线程拿到锁,counter加1,该线程内又碰到加锁的情况,则counter继续加1,这期间所有其他线程都只能等待,等待该线程释放所有锁,即counter递减到0为止

    from threading import Thread, RLock
    import time
    mutexB = mutexA = RLock()
    
    
    class Mythread(Thread):
    
        def run(self):
            self.f1()
            self.f2()
    
    
        def f1(self):
            mutexA.acquire()
            print('%s 拿到A锁' % self.name)
            mutexB.acquire()
            print('%s 拿到B锁' % self.name)
            mutexB.release()
            mutexA.release()
    
        def f2(self):
            mutexB.acquire()
            print('%s 拿到B锁' % self.name)
            time.sleep(1)
            mutexA.acquire()
            print('%s 拿到A锁' % self.name)
            mutexA.release()
            mutexB.release()
    
    
    if __name__ == '__main__':
        for i in range(3):
            t = Mythread()
            t.start()

    死锁

    from threading import Thread, Lock
    import time
    mutexA = Lock()
    mutexB = Lock()
    
    
    class Mythread(Thread):
    
        def run(self):
            self.f1()
            self.f2()
    
    
        def f1(self):
            mutexA.acquire()
            print('%s 拿到A锁' % self.name)
            mutexB.acquire()
            print('%s 拿到B锁' % self.name)
            mutexB.release()
            mutexA.release()
    
        def f2(self):
            mutexB.acquire()
            print('%s 拿到B锁' % self.name)
            time.sleep(1)
            mutexA.acquire()
            print('%s 拿到A锁' % self.name)
            mutexA.release()
            mutexB.release()
    
    
    if __name__ == '__main__':
        for i in range(3):
            t = Mythread()
            t.start()
  • 相关阅读:
    列表
    Pyunit测试框架
    Jmeter性能测试入门(转)
    Monkey for iOS(CrashMonkey4IOS)
    美化iTerm2
    不经过 App store 的安装方式(转)
    Mac上部署JDK/Ant/Jmeter/Jenkins
    display:inline-block元素之间错位问题
    vue项目安装依赖报错没有python
    正则匹配所有li标签内容
  • 原文地址:https://www.cnblogs.com/zhengyiqun1992/p/10409059.html
Copyright © 2011-2022 走看看