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.