当前位置| 科技 > > 列表>详情

一般来说该如何避免线程死锁?排他性死锁是什么意思?

2023-03-16 11:23:15 来源:创视网

如何避免线程死锁?

上面说了产生死锁的四个必要条件,为了避免死锁,只需要破坏产生死锁的四个条件中的其中一个就可以了。现在我们来挨个分析一下:

破坏互斥条件 :这个条件我们没有办法破坏,因为我们用锁本来就是想让他们互斥的(临界资源需要互斥访问)。

破坏请求与保持条件 :一次性申请所有的资源。

破坏不剥夺条件 :占用部分资源的线程进一步申请其他资源时,如果申请不到,可以主动释放它占有的资源。

破坏循环等待条件 :靠按序申请资源来预防。按某一顺序申请资源,释放资源则反序释放。破坏循环等待条件。

排他性死锁是什么意思?

除非某个外部进程断开死锁,否则死锁中的两个事务都将无限期等待下去。Microsoft SQL Server 数据库引擎死锁监视器定期检查陷入死锁的任务。如果监视器检测到循环依赖关系,将选择其中一个任务作为牺牲品,然后终止其事务并提示错误。这样,其他任务就可以完成其事务。对于事务以错误终止的应用程序,它还可以重试该事务,但通常要等到与它一起陷入死锁的其他事务完成后执行。

标签: 如何避免 线程死锁 排他性死锁 是什么意思