From 2707d2f5ba10dac91a70aebe7263e1f2a305e3ec Mon Sep 17 00:00:00 2001 From: Seshachalam Malisetti Date: Tue, 8 Sep 2020 09:16:25 +0530 Subject: [PATCH] use unbuffered channels --- goprocess/gp.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/goprocess/gp.go b/goprocess/gp.go index 87d9959c..a2775282 100644 --- a/goprocess/gp.go +++ b/goprocess/gp.go @@ -33,13 +33,15 @@ func FindAll() []P { return nil } - input := make(chan ps.Process, len(pss)) - output := make(chan P, len(pss)) + input := make(chan ps.Process) + output := make(chan P) - for _, ps := range pss { - input <- ps - } - close(input) + go func() { + for _, ps := range pss { + input <- ps + } + close(input) + }() var wg sync.WaitGroup wg.Add(concurrencyLimit) // used to wait for workers to be finished @@ -70,8 +72,10 @@ func FindAll() []P { } }() } - wg.Wait() // wait until all workers are finished - close(output) // no more results to be waited for + go func() { + wg.Wait() // wait until all workers are finished + close(output) // no more results to be waited for + }() var results []P for p := range output {