Я понимаю, что goroutines мультиплексируются на несколько потоков ОС, поэтому, если нужно блокировать, например, в ожидании ввода-вывода, другие продолжают работать. Но есть ли способ заранее узнать, сколько потоков я бы породил, если бы я создал n goroutines?
Например, если мы вызываем функцию ниже, мы знаем, сколько системных потоков (или максимального числа) будет создано для n goroutines:
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
}