github.com/zhiqiangxu/util@v0.0.0-20230112053021-0a7aee056cd5/diskqueue/monotime.go (about) 1 package diskqueue 2 3 import ( 4 "sync" 5 "time" 6 ) 7 8 var ( 9 timeLock sync.Mutex 10 lastTime int64 11 ) 12 13 // NowNano returns monotonic nano time 14 func NowNano() int64 { 15 timeLock.Lock() 16 17 thisTime := time.Now().UnixNano() 18 19 if thisTime <= lastTime { 20 thisTime = lastTime + 1 21 } 22 23 lastTime = thisTime 24 25 timeLock.Unlock() 26 27 return thisTime 28 }