こんにちは。
並列・並行処理の簡単な実現方法を調べてみました。他にもあれば調べたいです。
Unix
$ seq 10 | xargs -n 1 -P 8 exec_something
Go
maxProc := 8
limiter := make(chan struct{}, maxProc)
items := []int{1,2,3,4,5,6,7,8,9,10}
var wg sync.WaitGroup
for _, item := range items {
wg.Add(1)
go func(i int) {
limiter <- struct{}{}
defer wg.Done()
exec_something(i)
<-limiter
}(item)
}
wg.Wait()