SumInDruation int64
Druation int64
now int64
+ deleteNum int
pool *idpool.Idpool
kvt_map map[string]tmplK_item
sync.RWMutex
ticker := time.NewTicker(time.Second)
for{
s.now = (<- ticker.C).Unix()
- go func(){
- tmp := make(map[string]tmplK_item)
- s.Lock()
- for k,v := range s.kvt_map {tmp[k] = v}
- s.kvt_map = tmp
- s.Unlock()
- }()
}
}()
s.pool.Put(tmp.uid)
s.Lock()
delete(s.kvt_map,key)
+ s.deleteNum += 0
+ if s.deleteNum > len(s.kvt_map) {
+ s.deleteNum = 0
+ go s.Tidy()
+ }
s.Unlock()
}
return
func (s *tmplK) Buf() (int64,int) {
return s.now,len(s.kvt_map)
}
+
+func (s *tmplK) Tidy() {
+ tmp := make(map[string]tmplK_item)
+ s.Lock()
+ for k,v := range s.kvt_map {tmp[k] = v}
+ s.kvt_map = tmp
+ s.Unlock()
+}
\ No newline at end of file
SumInDruation int64
Druation int64
now int64
+ deleteNum int
pool *idpool.Idpool
kvt_map map[uintptr]tmplV_item
sync.RWMutex
ticker := time.NewTicker(time.Second)
for{
s.now = (<- ticker.C).Unix()
- go func(){
- tmp := make(map[uintptr]tmplV_item)
- s.Lock()
- for k,v := range s.kvt_map {tmp[k] = v}
- s.kvt_map = tmp
- s.Unlock()
- }()
}
}()
s.pool.Put(K.uid)
s.Lock()
delete(s.kvt_map,key)
+ if s.deleteNum > len(s.kvt_map) {
+ s.deleteNum = 0
+ go s.Tidy()
+ }
s.Unlock()
}
return
func (s *tmplV) Buf() (int64,int) {
return s.now,len(s.kvt_map)
}
+
+func (s *tmplV) Tidy() {
+ tmp := make(map[uintptr]tmplV_item)
+ s.Lock()
+ for k,v := range s.kvt_map {tmp[k] = v}
+ s.kvt_map = tmp
+ s.Unlock()
+}
\ No newline at end of file