From 799f855783aae5e136fcaea52b2b03835bd14613 Mon Sep 17 00:00:00 2001 From: John Date: Wed, 17 Jan 2018 13:12:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84grpool=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0goroutine=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g/os/grpool/grpool_api.go | 1 - g/os/grpool/grpool_pool.go | 21 ++++++++++----------- g/os/grpool/grpool_testb1_test.go | 10 +++++----- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/g/os/grpool/grpool_api.go b/g/os/grpool/grpool_api.go index 2af65b644..e3d66bd8f 100644 --- a/g/os/grpool/grpool_api.go +++ b/g/os/grpool/grpool_api.go @@ -121,5 +121,4 @@ func (p *Pool) Close() { p.SetExpire(-1) p.stopEvents <- struct{}{} // 通知workloop p.stopEvents <- struct{}{} // 通知clearloop - } \ No newline at end of file diff --git a/g/os/grpool/grpool_pool.go b/g/os/grpool/grpool_pool.go index 0bb1a5d25..17b52bddd 100644 --- a/g/os/grpool/grpool_pool.go +++ b/g/os/grpool/grpool_pool.go @@ -58,7 +58,6 @@ func (p *Pool) startClearLoop() { // 判断是否达到goroutine上上限 func (p *Pool) reachSizeLimit() bool { - return false return atomic.LoadInt32(&p.number) >= atomic.LoadInt32(&p.size) } @@ -70,13 +69,13 @@ func (p *Pool) getExpire() int32 { // 创建一个空的任务对象 func (p *Pool) newJob() *PoolJob { // 如果达到goroutine数限制,那么阻塞等待有空闲goroutine后继续 - //if p.reachSizeLimit() { - // // 阻塞等待空闲goroutine - // select { - // case <- p.freeEvents: - // return p.getJob() - // } - //} + if p.reachSizeLimit() { + // 阻塞等待空闲goroutine + select { + case <- p.freeEvents: + return p.getJob() + } + } j := &PoolJob { job : make(chan func(), 1), pool : p, @@ -93,9 +92,9 @@ func (p *Pool) addJob(j *PoolJob) bool { } p.queue.PushBack(j) // 如果当前的goroutine数量达到上线,那么需要使用空闲goroutine通知事件 - //if p.reachSizeLimit() { - // p.freeEvents <- struct{}{} - //} + if p.reachSizeLimit() { + p.freeEvents <- struct{}{} + } return true } diff --git a/g/os/grpool/grpool_testb1_test.go b/g/os/grpool/grpool_testb1_test.go index db82a0500..16826af47 100644 --- a/g/os/grpool/grpool_testb1_test.go +++ b/g/os/grpool/grpool_testb1_test.go @@ -23,8 +23,8 @@ func BenchmarkGrpool_1(b *testing.B) { } } -//func BenchmarkGoroutine_1(b *testing.B) { -// for i := 0; i < b.N; i++ { -// go increment1() -// } -//} \ No newline at end of file +func BenchmarkGoroutine_1(b *testing.B) { + for i := 0; i < b.N; i++ { + go increment1() + } +} \ No newline at end of file