死锁(Deadlock)是在多线程或多进程环境下的一种资源争夺和竞争导致的一种阻塞状态,其中各个线程或进程都在等待彼此持有的资源,导致无法继续执行。
死锁的发生通常需要满足以下四个必要条件,这些条件被称为死锁的必要条件。
1、互斥条件
某个资源一次只能被一个进程或线程占用。
如果某个资源已经被一个进程或线程占用,其他进程或线程必须等待。
2、占有且等待条件
一个进程或线程可以持有一个资源,并等待获取其他进程或线程占有的资源。
换句话说,一个进程或线程可以同时持有一些资源,同时等待获取其他资源。
3、非抢占条件
已经占用资源的进程或线程不能被强行抢占,资源只能在进程主动释放的情况下才能被其他进程或线程获取。
4、循环等待条件
一组进程或线程形成一个循环,每个进程或线程都在等待下一个进程或线程所持有的资源。