并发编程中避免不了在同一时间对同一数据的更改,因此,对锁的使用变得尤为重要,什么时间、什么场景该用什么类型的锁都是有讲究的,接下来介绍几种常见的锁。
死锁现象
问题产生需求,在学新的锁之前先来看看我们学的互斥锁有什么缺点。
所谓死锁,就是指两个或两个以上的进程或线程在执行过程中因争夺资源而造成的一种互相等待的现象,若无外力的作用,它们都将无法推进下去。
此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程或线程称为死锁进程或死锁线程。
来看一个简单的例子:
import time
from threading import Thread, Lock
mutexA = Lock()
mutexB = Lock()
class MyThread(Thread):