This commit is contained in:
andy pan 2018-08-08 18:08:06 +08:00
parent 62fc58f047
commit e99d428a5f
2 changed files with 11 additions and 2 deletions

View File

@ -55,6 +55,7 @@ type Pool struct {
once sync.Once
}
// clear expired workers periodically.
func (p *Pool) periodicallyPurge() {
heartbeat := time.NewTicker(p.expiryDuration)
@ -77,7 +78,11 @@ func (p *Pool) periodicallyPurge() {
}
n++
if n > 0 {
p.workers = idleWorkers[n:]
if n >= cap(idleWorkers) {
p.workers = idleWorkers[:0]
} else {
p.workers = idleWorkers[n:]
}
}
p.lock.Unlock()
}

View File

@ -79,7 +79,11 @@ func (p *PoolWithFunc) periodicallyPurge() {
}
n++
if n > 0 {
p.workers = idleWorkers[n:]
if n >= cap(idleWorkers) {
p.workers = idleWorkers[:0]
} else {
p.workers = idleWorkers[n:]
}
}
p.lock.Unlock()
}