mirror of
https://gitlab.com/mbugroup/lti-api.git
synced 2026-05-23 14:55:42 +00:00
.
This commit is contained in:
+32
@@ -0,0 +1,32 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
)
|
||||
|
||||
var (
|
||||
timestampTimer sync.Once
|
||||
// Timestamp please start the timer function before you use this value
|
||||
// please load the value with atomic `atomic.LoadUint32(&utils.Timestamp)`
|
||||
Timestamp uint32
|
||||
)
|
||||
|
||||
// StartTimeStampUpdater starts a concurrent function which stores the timestamp to an atomic value per second,
|
||||
// which is much better for performance than determining it at runtime each time
|
||||
func StartTimeStampUpdater() {
|
||||
timestampTimer.Do(func() {
|
||||
// set initial value
|
||||
atomic.StoreUint32(&Timestamp, uint32(time.Now().Unix()))
|
||||
go func(sleep time.Duration) {
|
||||
ticker := time.NewTicker(sleep)
|
||||
defer ticker.Stop()
|
||||
|
||||
for t := range ticker.C {
|
||||
// update timestamp
|
||||
atomic.StoreUint32(&Timestamp, uint32(t.Unix()))
|
||||
}
|
||||
}(1 * time.Second) // duration
|
||||
})
|
||||
}
|
||||
Reference in New Issue
Block a user