forked from mirror/ants
Merge branch 'develop'
This commit is contained in:
commit
2a0f47e440
9
pool.go
9
pool.go
|
@ -74,7 +74,7 @@ func (p *Pool) monitorAndClear() {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
n = i
|
n = i
|
||||||
w.stop()
|
w.task <- nil
|
||||||
idleWorkers[i] = nil
|
idleWorkers[i] = nil
|
||||||
p.running--
|
p.running--
|
||||||
}
|
}
|
||||||
|
@ -118,7 +118,7 @@ func (p *Pool) Submit(task f) error {
|
||||||
return ErrPoolClosed
|
return ErrPoolClosed
|
||||||
}
|
}
|
||||||
w := p.getWorker()
|
w := p.getWorker()
|
||||||
w.sendTask(task)
|
w.task <- task
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,11 +143,12 @@ func (p *Pool) Release() error {
|
||||||
p.release <- sig{}
|
p.release <- sig{}
|
||||||
running := p.Running()
|
running := p.Running()
|
||||||
for i := 0; i < running; i++ {
|
for i := 0; i < running; i++ {
|
||||||
p.getWorker().stop()
|
p.getWorker().task <- nil
|
||||||
}
|
}
|
||||||
for i := range p.workers {
|
for i := range p.workers {
|
||||||
p.workers[i] = nil
|
p.workers[i] = nil
|
||||||
}
|
}
|
||||||
|
p.workers = nil
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -157,7 +158,7 @@ func (p *Pool) ReSize(size int) {
|
||||||
if size < p.Cap() {
|
if size < p.Cap() {
|
||||||
diff := p.Cap() - size
|
diff := p.Cap() - size
|
||||||
for i := 0; i < diff; i++ {
|
for i := 0; i < diff; i++ {
|
||||||
p.getWorker().stop()
|
p.getWorker().task <- nil
|
||||||
}
|
}
|
||||||
} else if size == p.Cap() {
|
} else if size == p.Cap() {
|
||||||
return
|
return
|
||||||
|
|
|
@ -75,7 +75,7 @@ func (p *PoolWithFunc) monitorAndClear() {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
n = i
|
n = i
|
||||||
w.stop()
|
w.args <- nil
|
||||||
idleWorkers[i] = nil
|
idleWorkers[i] = nil
|
||||||
p.running--
|
p.running--
|
||||||
}
|
}
|
||||||
|
@ -123,7 +123,7 @@ func (p *PoolWithFunc) Serve(args interface{}) error {
|
||||||
return ErrPoolClosed
|
return ErrPoolClosed
|
||||||
}
|
}
|
||||||
w := p.getWorker()
|
w := p.getWorker()
|
||||||
w.sendTask(args)
|
w.args <- args
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -148,11 +148,12 @@ func (p *PoolWithFunc) Release() error {
|
||||||
p.release <- sig{}
|
p.release <- sig{}
|
||||||
running := p.Running()
|
running := p.Running()
|
||||||
for i := 0; i < running; i++ {
|
for i := 0; i < running; i++ {
|
||||||
p.getWorker().stop()
|
p.getWorker().args <- nil
|
||||||
}
|
}
|
||||||
for i := range p.workers {
|
for i := range p.workers {
|
||||||
p.workers[i] = nil
|
p.workers[i] = nil
|
||||||
}
|
}
|
||||||
|
p.workers = nil
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -162,7 +163,7 @@ func (p *PoolWithFunc) ReSize(size int) {
|
||||||
if size < p.Cap() {
|
if size < p.Cap() {
|
||||||
diff := p.Cap() - size
|
diff := p.Cap() - size
|
||||||
for i := 0; i < diff; i++ {
|
for i := 0; i < diff; i++ {
|
||||||
p.getWorker().stop()
|
p.getWorker().args <- nil
|
||||||
}
|
}
|
||||||
} else if size == p.Cap() {
|
} else if size == p.Cap() {
|
||||||
return
|
return
|
||||||
|
|
10
worker.go
10
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
|
|
||||||
}
|
|
||||||
|
|
|
@ -56,13 +56,3 @@ func (w *WorkerWithFunc) run() {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
|
|
||||||
// stop this worker.
|
|
||||||
func (w *WorkerWithFunc) stop() {
|
|
||||||
w.sendTask(nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
// sendTask sends a task to this worker.
|
|
||||||
func (w *WorkerWithFunc) sendTask(args interface{}) {
|
|
||||||
w.args <- args
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue