Sobes.tech
Junior — Middle

Quelle est la quantité maximale de goroutines pouvant être lancées simultanément dans une application?

sobes.tech IA

Réponse de l'IA

En Go, il n’y a pas de limite strict sur le nombre maximal de goroutines pouvant être lancées simultanément. Théoriquement, elles peuvent être très nombreuses — des dizaines, des centaines, voire des millions, en fonction des ressources du système (mémoire, CPU).

Les goroutines sont très légères comparées aux threads du système d’exploitation, car elles utilisent une pile dynamique qui croît selon les besoins.

Cependant, la limite pratique dépend de :

  • La quantité de mémoire disponible (chaque goroutine occupe au moins quelques kilo-octets).
  • La logique de l’application et la synchronisation entre goroutines.
  • La charge sur le planificateur de Go.

Exemple de lancement d’un grand nombre de goroutines :

package main

import (
    "fmt"
    "sync"
)

func main() {
    var wg sync.WaitGroup
    const n = 100000
    wg.Add(n)

    for i := 0; i < n; i++ {
        go func(i int) {
            defer wg.Done()
            // travail simple
            _ = i * 2
        }(i)
    }

    wg.Wait()
    fmt.Println("Toutes les goroutines sont terminées")
}

Ainsi, la limite est plutôt pratique que systémique.