Junior — Middle
Cum se realizează gestionarea și distribuirea sarcinilor între goroutine-uri în limbajul Go?
sobes.tech AI
Răspuns de la AI
În limbajul Go, gestionarea și distribuirea sarcinilor între goroutines se realizează de către un planificator (scheduler) încorporat în runtime-ul Go. Goroutines sunt fire ușoare care sunt inițiate cu cuvântul cheie go.
Planificatorul Go distribuie goroutines între firele de sistem (OS threads) și gestionează execuția lor, asigurând concurența și paralelismul. Utilizează un model M:N, unde M este numărul de fire de sistem, iar N este numărul de goroutines.
Exemplu de creare a unei goroutines:
func sayHello() {
fmt.Println("Salut din goroutine")
}
func main() {
go sayHello() // pornește goroutine
time.Sleep(time.Second) // așteaptă pentru ca goroutine să se execute
}
Astfel, dezvoltatorul pornește pur și simplu goroutine-ul, iar runtime-ul Go distribuie sarcinile și face comutări între ele.