我知道 goroutine 被多路复用到多个操作系统线程上,所以如果一个应该阻塞,比如在等待 I/O 时,其他的会继续运行。但是有没有办法提前知道如果我要创建 n 个 goroutine 会产生多少线程?
例如,如果我们调用下面的函数,我们是否知道将为 n 个 goroutine 创建多少(或最大数量)系统线程:
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
}