並行処理スピードアップコンテスト
/icons/hr.icon
sync.WaitGroupを使用してgorutineの終了を待つ
Go 1.25からはWaitGroup.Goを使うのが便利
WaitGroup.AddとWaitGroup.Doneの書き忘れを防ぐ
go func()の記述も不要で可読性も上がる
code:go
var wg sync.WaitGroup
// AddとDone
wg.Add(1)
go func() {
defer wg.Done()
processFile(f)
}()
// Go
wg.Go(func() {
processFile(f)
})
runtime.GOMAXPROCS()の引数が0の場合、runtime.NumCPU()の値になる