goroutine は複数の OS スレッドに多重化されているため、I/O の待機中などに 1 つがブロックされても、他のスレッドは引き続き実行されることを理解しています。しかし、n個のゴルーチンを作成した場合に生成されるスレッドの数を事前に知る方法はありますか?
たとえば、以下の関数を呼び出すと、n 個のゴルーチンに対して作成されるシステム スレッドの数 (または最大数) がわかります。
type Vector []float64
// Apply the operation to n elements of v starting at i.
func (v Vector) DoSome(i, n int, u Vector, c chan int) {
for ; i < n; i++ {
v[i] += u.Op(v[i])
}
c <- 1; // signal that this piece is done
}