/* 由于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 }