Junior
Šta su goroutine?
sobes.tech АИ
Одговор од АИ
Lagana nit za izvršavanje, koju upravlja okruženje za izvršavanje Go. Kreira se ključnom reči go pre poziva funkcije.
Glavne karakteristike:
- Manja potrošnja memorije: Gorutina počinje sa malom stekom (obično 2 KB), koja se može dinamički povećavati ili smanjivati.
- Brža kreacija: Kreiranje gorutine je mnogo brže nego kreiranje sistemskog niti.
- Multiplexiranje na sistemske niti: Mnoge gorutine mogu biti multiplexovane na manji broj sistemskih niti od strane planera Go.
- Kooperativno planiranje: Gorutine se ne prekidaju preemptivno; one dobrovoljno prepuštaju kontrolu planeru (npr. pri blokirajućim pozivima ili eksplicitnim pozivima
runtime.Gosched()).
Primer kreiranja:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Zdravo iz gorutine!")
}
func main() {
go sayHello() // Pokreće sayHello kao gorutinu
fmt.Println("Zdravo iz glavne funkcije!")
time.Sleep(1 * time.Second) // Da glavna funkcija ne završi pre gorutine
}
Upoređenje sa nitima:
| Osobina | Go gorutine | OS niti |
|---|---|---|
| Upravljanje | Okruženje za izvršavanje Go | Operativni sistem |
| Potrošnja memorije | Niska, dinamička steka | Visoka, fiksna steka |
| Kreiranje | Brzo | Sporo |
| Planiranje | Kooperativno | Preemptivno |
| Sinhronizacija | Kanali, sync paket | Muteksi, semafori OS-a |