goProject/trunk/goutil/syncUtil/syncUtil.go
皮蛋13361098506 1b77f62820 初始化项目
2025-01-06 16:01:02 +08:00

34 lines
1006 B
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
由于Go不提供超时锁所以自己实现了支持超时机制的互斥锁Locker和读写锁RWLocker。
为了方便供第三方程序使用提供了根据Key获取超时互斥锁和超时读写锁的复合对象LockerUtil和RWLockerUtil。
为了在出现锁超时时方便查找问题,会记录上次成功获得锁时的堆栈信息;并且在本次获取锁失败时,同时返回上次成功时的堆栈信息和本次的堆栈信息。
*/
package syncUtil
const (
// 默认超时的毫秒数(1小时)
con_Default_Timeout_Milliseconds = 60 * 60 * 1000
// 写锁保护时间(纳秒)
con_Write_Protect_Nanoseconds = 5 * 1000 * 1000
)
var (
// 是否记录堆栈信息的状态
if_record_stack_info = false
)
// 获取超时时间
func getTimeout(timeout int) int {
if timeout > 0 {
return timeout
} else {
return con_Default_Timeout_Milliseconds
}
}
// 设置是否记录堆栈信息的状态
func SetIfRecordStackInfo(value bool) {
if_record_stack_info = value
}