私は私の以前の記事Processing array in Go parallelに関する追加の質問があります。たとえば、他の言葉で並行処理での配列の処理:多くのスレッドのリスクはありますか?
a1 := []int{0, 1, 2, 3, 4...1000}
a2 := []int{10, 20, 30, 40, 50...10000}
and I have only 4 cpus :
runtime.GOMAXPROCS(4)
var wg sync.WaitGroup
Is the following code still correct ?
for i := 1; i < 1000; i++ {
wg.Add(1)
go func(i int) {
defer wg.Done()
x := process_array(a1[i], a2[i])
fmt.Println(a1[i], "+", a2[i], "=", x)
}(i)
}
wg.Wait()
ため、runtime.GOMAXPROCSは(4)スレッドの数を制限することができるようになります、私の配列が非常に大きいことを想像4にするか、1000スレッドの「蓄積」という問題がありますか?コメントしてくれてありがとう !
ところでGoで起こる並列プログラミングではありません。並行プログラミング - パラレルプログラミングも可能にします(たとえば、複数のスレッドを使用する場合など)。 –