package snowflake
import (
"sync"
"time"
)
var (
sfMutex sync.Mutex
sfLastTime int64
)
// GenerateID 生成唯一ID
// 基于毫秒时间戳,当同一毫秒内调用时等待到下一毫秒
func GenerateID() int64 {
sfMutex.Lock()
defer sfMutex.Unlock()
now := time.Now().UnixMilli()
if now <= sfLastTime {
sfLastTime++
return sfLastTime
}
sfLastTime = now
return now
}