Sobes.tech
Middle

Cum se pot gestiona goroutine-urile și toate rulează pe un singur fir?

sobes.tech AI

Răspuns de la AI

Goroutine-urile în Go sunt fire ușoare gestionate de runtime-ul Go. Ele nu sunt atribuite unui singur fir, ci sunt distribuite între firele de sistem (fire OS) folosind planificatorul Go.

Gestionarea goroutine-urilor se face prin:

  • Creare: go func() { ... }() pornește o goroutine nouă.
  • Sincronizare: canale (chan), sync.WaitGroup, mutexe și alte primitive.
  • Limitarea numărului de goroutine-uri care rulează simultan poate fi realizată prin semafoare sau canale tamponate.

Planificatorul Go distribuie multe goroutine-uri pe un pool de fire de sistem, de obicei numărul de fire este egal cu numărul de CPU-uri disponibile (poate fi configurat prin runtime.GOMAXPROCS). Astfel, goroutine-urile pot fi executate în paralel pe mai multe fire, dar nu toate neapărat pe unul singur.