Skip to content

Latest commit

 

History

History
27 lines (21 loc) · 815 Bytes

README.md

File metadata and controls

27 lines (21 loc) · 815 Bytes

死锁检测

sync.RWMutexsync.Mutex的加锁,解锁方法进行封装,记录每个协程的加锁路径图,并添加到全局加锁路径图中,通过遍历这个图寻找是否存在环路来判定是否存在死锁。 只要代码中的所有加锁路径全部覆盖到,不需要程序实际发生死锁即可检测到死锁。

设置

type (
	DeadlockInfo struct {
		stack    string
		lockPath []string
	}
	OnDeadlockFunc func(deadlockType int, infos []DeadlockInfo)
	Options        struct {
		CheckDeadLock bool
		OnDeadlock    OnDeadlockFunc
	}
)

调用SetOptions(o Options),默认检测到死锁后打印死锁路径和堆栈信息 到标准输出,然后直接退出。

使用

支持RWMtexMutex。使用方式和sync.RWMutexsync.Mutex 一致