|
@@ -12,15 +12,15 @@ var (
|
|
|
)
|
|
|
|
|
|
type orderCode struct {
|
|
|
- pool chan string
|
|
|
- all *sync.Map
|
|
|
- lock *sync.Mutex
|
|
|
+ Pool chan string
|
|
|
+ All *sync.Map
|
|
|
+ Lock *sync.Mutex
|
|
|
}
|
|
|
|
|
|
func (o *orderCode) gc() {
|
|
|
- VarOrderCode.all.Range(func(key, value interface{}) bool {
|
|
|
+ VarOrderCode.All.Range(func(key, value interface{}) bool {
|
|
|
if time.Now().Day() != value.(int) {
|
|
|
- VarOrderCode.all.Delete(key)
|
|
|
+ VarOrderCode.All.Delete(key)
|
|
|
}
|
|
|
return true
|
|
|
})
|
|
@@ -28,22 +28,22 @@ func (o *orderCode) gc() {
|
|
|
}
|
|
|
func init() {
|
|
|
VarOrderCode = &orderCode{
|
|
|
- pool: make(chan string, 20),
|
|
|
- all: &sync.Map{},
|
|
|
- lock: &sync.Mutex{},
|
|
|
+ Pool: make(chan string, 20),
|
|
|
+ All: &sync.Map{},
|
|
|
+ Lock: &sync.Mutex{},
|
|
|
}
|
|
|
VarOrderCode.gc()
|
|
|
for i := 0; i < 10; i++ {
|
|
|
go func() {
|
|
|
- VarOrderCode.lock.Lock()
|
|
|
- defer VarOrderCode.lock.Unlock()
|
|
|
+ VarOrderCode.Lock.Lock()
|
|
|
+ defer VarOrderCode.Lock.Unlock()
|
|
|
for {
|
|
|
o := fmt.Sprintf("%d%s", time.Now().Unix()+900000000, qutil.GetRandom(2))
|
|
|
- if _, ok := VarOrderCode.all.Load(o); ok {
|
|
|
+ if _, ok := VarOrderCode.All.Load(o); ok {
|
|
|
continue
|
|
|
}
|
|
|
- VarOrderCode.all.Store(o, time.Now().Day())
|
|
|
- VarOrderCode.pool <- o
|
|
|
+ VarOrderCode.All.Store(o, time.Now().Day())
|
|
|
+ VarOrderCode.Pool <- o
|
|
|
}
|
|
|
}()
|
|
|
}
|