From 754e21075a2b67ab6df1b2aa6201d2506f07cd42 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 26 Aug 2016 13:10:33 +0200 Subject: Add parallel letter --- .../parallel_letter_frequency.go | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 go/parallel-letter-frequency/parallel_letter_frequency.go (limited to 'go/parallel-letter-frequency/parallel_letter_frequency.go') diff --git a/go/parallel-letter-frequency/parallel_letter_frequency.go b/go/parallel-letter-frequency/parallel_letter_frequency.go new file mode 100644 index 0000000..e1080b8 --- /dev/null +++ b/go/parallel-letter-frequency/parallel_letter_frequency.go @@ -0,0 +1,26 @@ +package letter + +import "sync" + +func ConcurrentFrequency(s []string) FreqMap { + c := make(chan rune, len(s)) + wg := sync.WaitGroup{} + for _, v := range s { + wg.Add(1) + go func(s string) { + for _, r := range s { + c <- r + } + wg.Done() + }(v) + } + go func() { + wg.Wait() + close(c) + }() + m := FreqMap{} + for r := range c { + m[r]++ + } + return m +} -- cgit v1.2.3