multithreading - 如何保证不死锁

标签 multithreading deadlock

我在一次采访中被一个问题困住了。

给定两个线程,并且每个线程都有一个锁,如何保证不发生死锁。

我的知识是避免僵局并不容易,这就是我陷入困境的原因。谁能给个提示。

谢谢!

最佳答案

描述有点欠缺,但是如果你强加了锁定顺序(例如,如果锁是 A 和 B,除非你已经锁定 A,否则永远不要锁定 B,并且在 B 被锁定时永远不要释放 A),那么就不会发生死锁.

关于multithreading - 如何保证不死锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2284653/

相关文章:

c# - 使用 Task.WaitAny() 获取完成的任务 ID

sql - 使用 SELECT FOR UPDATE 时出现死锁

java - `JNI_OnLoad` 是否总是在主线程中调用?

c - 在 EnterCriticalSection() 上抛出的访问读取冲突

mysql - 了解 MySQL 中的死锁

mysql - 'show engine innodb status' 中过时的死锁信息

sql-server - 有没有办法让 NHibernate 发出死锁提示?

sql-server - 了解特定类型的死锁

c# - 长时间运行的任务与线程——性能

java - 在 Java 中创建线程可能是一个瓶颈吗?