summaryrefslogtreecommitdiff
path: root/go/parallel-letter-frequency/parallel_letter_frequency.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/parallel-letter-frequency/parallel_letter_frequency.go')
-rw-r--r--go/parallel-letter-frequency/parallel_letter_frequency.go26
1 files changed, 26 insertions, 0 deletions
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
+}