summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-08-26 13:19:54 +0200
committerDimitri Sokolyuk <demon@dim13.org>2016-08-26 13:19:54 +0200
commitf47002f53090869eb8a0d725b7770959a3af30db (patch)
tree40a6cf9b915bfa8469e7de69afa6898f5df693e8
parent754e21075a2b67ab6df1b2aa6201d2506f07cd42 (diff)
Mutex
-rw-r--r--go/parallel-letter-frequency/parallel_letter_frequency.go16
1 files changed, 6 insertions, 10 deletions
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
}