go(go语言)中的在线死锁检测
go-deadlock 可以检测此类情况 (除非您跨越 goroutine 的边界 - 例如锁 A,然后创建一个 goroutine,阻塞直到它发出信号,然后在 goroutine 内锁 B),即使死锁本身发生得非常罕见,而且很难重现! 每当 go-deadlock 看到对锁 B 的锁定尝试时,它会记录 A 之前 B 的顺序,对于当前在同一个 goroutine 中持有的每个锁,并在看到锁定顺序被违反时打印 (默认情况下退出程序)。
此外,如果它发现我们在锁上等待时间很长(默认为 30 秒),则会报告潜在的死锁,同时还会打印当前持有锁的 goroutine 的堆栈跟踪信息。
暂无开放 Issues,或尚未同步最近议题。