diff --git a/pool.go b/pool.go index d5069ef..e7836e5 100644 --- a/pool.go +++ b/pool.go @@ -74,7 +74,7 @@ func (p *Pool) monitorAndClear() { break } n = i - w.stop() + w.task <- nil idleWorkers[i] = nil p.running-- } @@ -118,7 +118,7 @@ func (p *Pool) Submit(task f) error { return ErrPoolClosed } w := p.getWorker() - w.sendTask(task) + w.task <- task return nil } @@ -143,7 +143,7 @@ func (p *Pool) Release() error { p.release <- sig{} running := p.Running() for i := 0; i < running; i++ { - p.getWorker().stop() + p.getWorker().task <- nil } for i := range p.workers { p.workers[i] = nil @@ -157,7 +157,7 @@ func (p *Pool) ReSize(size int) { if size < p.Cap() { diff := p.Cap() - size for i := 0; i < diff; i++ { - p.getWorker().stop() + p.getWorker().task <- nil } } else if size == p.Cap() { return diff --git a/worker.go b/worker.go index babb8af..9031f57 100644 --- a/worker.go +++ b/worker.go @@ -56,13 +56,3 @@ func (w *Worker) run() { } }() } - -// stop this worker. -func (w *Worker) stop() { - w.sendTask(nil) -} - -// sendTask sends a task to this worker. -func (w *Worker) sendTask(task f) { - w.task <- task -}