Sobes.tech
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.