谈谈[Python/RLock/Lock]

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yyy72999/article/details/80667288

当我们用Python进行 高并行编程的时候,尤其是多线程 threading编程下 我们会用到内存变量共享 ,这时候就会用到锁 lock,但是我们经常会碰到死锁下面给大家举个例子说一下什么叫做死锁以及RLOCK/LOCK的特点以及如何避免死锁

  • 死锁的产生
  • LOCK
  • RLOCK
假设我们有两个并发线程(线程A与线程B),同时还有两个资源(12)假设线程A需要资源1,线程B需要资源2,在这种情况下,这两个线程都会自己请求他们自己的锁,一切都可以顺畅的进行下去,不过如果随后在释放锁之前,线程A需要资源2的锁,线程B需要资源1的锁,这对于两个处理来说都是必要的,由于两个资源都被上锁了,因此这两个线程会被阻塞,并相互等待,直到被占用的资源释放为止

Lock

调用acquire会进行获取锁并阻塞状态,当你没有释放release时候在调用acquire的时候就会造成死锁

RLock

正常每一次调用acquire 都会造成阻塞状态,但是当我们在同一个线程内可以一直调用acquire当然他是和release成对出现的

猜你喜欢

转载自blog.csdn.net/yyy72999/article/details/80667288