From ba41ea784b811f024871f6b022a8fa22097cdcbf Mon Sep 17 00:00:00 2001 From: Shikong <919411476@qq.com> Date: Thu, 11 Nov 2021 15:46:08 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20channel=20=E7=94=9F=E4=BA=A7=E8=80=85/?= =?UTF-8?q?=E6=B6=88=E8=B4=B9=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- base/channel/example/main.go | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/base/channel/example/main.go b/base/channel/example/main.go index 02cf637..0d67e52 100644 --- a/base/channel/example/main.go +++ b/base/channel/example/main.go @@ -2,6 +2,7 @@ package main import ( "fmt" + "runtime" "sync" "sync/atomic" ) @@ -12,7 +13,7 @@ var consumer = int32(0) func f1(ch chan int) { defer wg.Done() - for i := 0; i < 100; i++ { + for i := 0; i < 1_000_000; i++ { ch <- i } @@ -23,7 +24,7 @@ func f1(ch chan int) { func f2(in chan int, out chan int) { defer wg.Done() for i := range in { - out <- i * i + out <- i } if atomic.AddInt32(&consumer, -1) <= 0 { @@ -33,16 +34,18 @@ func f2(in chan int, out chan int) { } func main() { - ch := make(chan int, 20) + ch := make(chan int, 50) ch2 := make(chan int, 5) wg.Add(1) go f1(ch) - wg.Add(2) - atomic.AddInt32(&consumer, 2) - go f2(ch, ch2) - go f2(ch, ch2) + wg.Add(runtime.NumCPU()) + atomic.AddInt32(&consumer, int32(runtime.NumCPU())) + + for i := 0; i < runtime.NumCPU(); i++ { + go f2(ch, ch2) + } for i := range ch2 { fmt.Println(i)