根据标题,死锁有哪些类型?最近我被问到这个问题,但我只知道死锁的类型,当线程 A 正在等待线程 B 获取的锁,而线程 B 正在等待线程 A 获取的锁时。是否有还有其他吗?
最佳答案
可以考虑两种类型的死锁:
<强>1。资源死锁
当进程试图获得对设备、文件、锁、服务器或其他资源的独占访问权时发生。
在资源死锁模型中,进程会一直等待,直到收到它请求的所有资源。
资源模型也称为AND 模型。在此模型中,当且仅当存在等待进程的循环时才会发生死锁,每个等待进程都依赖于循环中的下一个进程才能取得进展。
可能的情况:事务处理场景
<强>2。沟通僵局
也称为通信死锁模型,发生在进程 A 试图向进程 B 发送消息时,进程 B 试图向进程 C 发送消息,进程 C 试图向进程 C 发送消息A.
通信死锁模型也称为OR模型。
显然,它很容易满足死锁发生的循环等待条件。
可能的情况:消息传递场景
希望这对您有用并让提问者满意。
关于multithreading - 死锁有哪些类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27448953/