From f47002f53090869eb8a0d725b7770959a3af30db Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 Aug 2016 13:19:54 +0200 Subject: Mutex --- .../parallel_letter_frequency.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'go/parallel-letter-frequency') diff --git a/go/parallel-letter-frequency/parallel_letter_frequency.go b/go/parallel-letter-frequency/parallel_letter_frequency.go index e1080b8..895af78 100644 --- a/go/parallel-letter-frequency/parallel_letter_frequency.go +++ b/go/parallel-letter-frequency/parallel_letter_frequency.go @@ -3,24 +3,20 @@ package letter import "sync" func ConcurrentFrequency(s []string) FreqMap { - c := make(chan rune, len(s)) + m := FreqMap{} + mu := &sync.Mutex{} wg := sync.WaitGroup{} for _, v := range s { wg.Add(1) go func(s string) { for _, r := range s { - c <- r + mu.Lock() + m[r]++ + mu.Unlock() } wg.Done() }(v) } - go func() { - wg.Wait() - close(c) - }() - m := FreqMap{} - for r := range c { - m[r]++ - } + wg.Wait() return m } -- cgit v1.2.3