死锁的概念 在多线程环境下,为了避免资源的竞争,通常我们会给资源加上互斥锁,谁拿到这个锁谁就有资格享有这个资源。 当一个 A 进程申请资源时,如果这个时候没有可用的资源,那么这个进程会进入等待状态。如果所申请的资源被其他进程 B 占有,并且该进程也在等待进程 A 的资源,那么在这种各自都在等待对方释放锁,你等我,我等你的情况,就可能永远都无法释放锁。这种情况称为死锁(deadlock)。 死锁的必要条件 要发生死锁,那就需要同时满足四个条件: 互斥(mutual exclusion) :同一个资源不可被多个进程所共享。 占有并等待(hold and wait) :如果进程 A 发现想要的资源...