mirror of
https://github.com/yusing/godoxy.git
synced 2026-02-18 23:07:44 +01:00
39 lines
654 B
Go
39 lines
654 B
Go
package main
|
|
|
|
import "sync"
|
|
|
|
func ParallelForEach[T interface{}](obj []T, do func(T)) {
|
|
var wg sync.WaitGroup
|
|
wg.Add(len(obj))
|
|
for _, v := range obj {
|
|
go func(v T) {
|
|
do(v)
|
|
wg.Done()
|
|
}(v)
|
|
}
|
|
wg.Wait()
|
|
}
|
|
|
|
func ParallelForEachValue[K comparable, V interface{}](obj map[K]V, do func(V)) {
|
|
var wg sync.WaitGroup
|
|
wg.Add(len(obj))
|
|
for _, v := range obj {
|
|
go func(v V) {
|
|
do(v)
|
|
wg.Done()
|
|
}(v)
|
|
}
|
|
wg.Wait()
|
|
}
|
|
|
|
func ParallelForEachKeyValue[K comparable, V interface{}](obj map[K]V, do func(K, V)) {
|
|
var wg sync.WaitGroup
|
|
wg.Add(len(obj))
|
|
for k, v := range obj {
|
|
go func(k K, v V) {
|
|
do(k, v)
|
|
wg.Done()
|
|
}(k, v)
|
|
}
|
|
wg.Wait()
|
|
} |