Skip to content

lt90s/deadlock

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

死锁检测

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 一致

About

golang deadlock detection

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages