Entiendo que los goroutines se multiplexan en múltiples subprocesos de sistema operativo, por lo que si uno debe bloquearlos, como por ejemplo mientras espera la E/S, otros continúan ejecutándose. ¿Pero hay alguna forma de saber con anticipación cuántos hilos engendraría si tuviera que crear n goroutines?¿Puedes detectar cuántos hilos creará un número determinado de gorutines?
Por ejemplo, si llamamos a la función debajo de los cuales sabemos cuántos (o el número máximo de) serían creados hilos del sistema para 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
}
+1 para una de las dos únicas preguntas relevantes (sin rumores, sin chistar) GO hasta ahora –
Eso es solo un bucle for. Ni siquiera expresa concurrencia, y mucho menos paralelismo. – Dustin