Junior — Middle
Ako riadi plánovač OS vykonávanie funkcie, ktorá vykonáva sieťový dopyt?
sobes.tech AI
Odpoveď od AI
V Go, plánovač (scheduler) riadi gorutine, ki so lahki niti. Ko funkcija izvaja mrežni zahtevek, se običajno blokira na operaciji vhod/izhod.
Go-jev načrtovalec uporablja neblokirni vhod/izhod in asinhrone sistemske klice. Ko gorutina čaka na odgovor iz omrežja, ga načrtovalec postavi v stanje čakanja in preklopi na izvajanje drugih gorutin.
To omogoča učinkovito uporabo sistemskih virov in ne blokira niti operacijskega sistema. Po zaključku mrežnega zahtevka načrtovalec nadaljuje izvajanje gorutine.
Primer:
func fetch(url string) {
resp, err := http.Get(url) // mrežni zahtevek
if err != nil {
log.Fatal(err)
}
defer resp.Body.Close()
// obdelava odgovora
}
func main() {
go fetch("http://example.com")
// druge gorutine tečejo vzporedno
}
Tako načrtovalec Go učinkovito upravlja z gorutini, jih preklaplja med blokirajočimi operacijami, kot so mrežni zahtevki.