1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2026-05-14 08:29:10 -04:00

improve timed queue performance

This commit is contained in:
v2ray
2016-01-10 09:11:46 +01:00
parent 8f9b23a6ab
commit d1fecba6e4
3 changed files with 50 additions and 50 deletions

View File

@@ -32,22 +32,19 @@ type indexTimePair struct {
func NewTimedUserSet() UserSet {
tus := &TimedUserSet{
validUsers: make([]vmess.User, 0, 16),
userHash: make(map[string]indexTimePair, 512),
userHashDeleteQueue: collect.NewTimedQueue(updateIntervalSec),
access: sync.RWMutex{},
validUsers: make([]vmess.User, 0, 16),
userHash: make(map[string]indexTimePair, 512),
access: sync.RWMutex{},
}
tus.userHashDeleteQueue = collect.NewTimedQueue(updateIntervalSec, tus.removeEntry)
go tus.updateUserHash(time.Tick(updateIntervalSec * time.Second))
go tus.removeEntries(tus.userHashDeleteQueue.RemovedEntries())
return tus
}
func (us *TimedUserSet) removeEntries(entries <-chan interface{}) {
for entry := range entries {
us.access.Lock()
delete(us.userHash, entry.(string))
us.access.Unlock()
}
func (us *TimedUserSet) removeEntry(entry interface{}) {
us.access.Lock()
delete(us.userHash, entry.(string))
us.access.Unlock()
}
func (us *TimedUserSet) generateNewHashes(lastSec, nowSec int64, idx int, id *vmess.ID) {