Python 死锁怎么产生?怎么避免?
死锁:两个及以上线程互相持有对方需要的锁且等待不释放(循环等待)。产生条件:互斥、持有并等待、不可剥夺、循环等待。避免:① 锁顺序一致(全局固定加锁顺序);② 一次只持一把锁(锁粒度拆分);③ 用 with 管理生命周期;④ acquire(timeout) 超时放弃重试(不无限等);⑤ 减少持锁时间(锁内不做 IO/耗时);⑥ 死锁检测:faulthandler、pstack 抓线程栈。经典例子:线程 A 持锁 1 等锁 2,线程 B 持锁 2 等锁 1。
一起交流
分享经验,让问题更进一步
讨论,从你的观点开始
还没有回复,欢迎补充经验或分享不同的思路。