summaryrefslogtreecommitdiff
path: root/go/parallel-letter-frequency/parallel_letter_frequency.go
blob: 895af78ec7d3677d158b92d7dd2b792d73b248bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package letter

import "sync"

func ConcurrentFrequency(s []string) FreqMap {
	m := FreqMap{}
	mu := &sync.Mutex{}
	wg := sync.WaitGroup{}
	for _, v := range s {
		wg.Add(1)
		go func(s string) {
			for _, r := range s {
				mu.Lock()
				m[r]++
				mu.Unlock()
			}
			wg.Done()
		}(v)
	}
	wg.Wait()
	return m
}