Junior — Middle
Kako planer operativnog sistema upravlja izvršavanjem funkcije koja vrši mrežni zahtev?
sobes.tech АИ
Одговор од АИ
U Go, scheduler (planer) upravlja goroutine-ima, koji su laki niti. Kada funkcija izvršava mrežni zahtev, obično se blokira na operaciji ulaza/izlaza.
Go scheduler koristi neblokirajući ulaz/izlaz i asinhrone sistemske pozive. Kada goroutine čeka odgovor od mreže, scheduler je stavlja u stanje čekanja i prebacuje na izvršavanje drugih goroutine-a.
Ovo omogućava efikasno korišćenje sistemskih resursa i ne blokira nit operativnog sistema. Nakon završetka mrežnog zahteva, scheduler nastavlja izvršavanje goroutine.
Primer:
func fetch(url string) {
resp, err := http.Get(url) // mrežni zahtev
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// obrada odgovora
}
func main() {
go fetch("http://example.com")
// druge goroutine-ove se izvršavaju paralelno
}
Na ovaj način, Go scheduler efikasno upravlja goroutine-ima, prebacujući ih tokom blokirajućih operacija, kao što su mrežni zahtevi.