Sobes.tech
Junior — Middle

Jak plánovač operačního systému řídí provádění funkce, která provádí síťový požadavek?

sobes.tech AI

Odpověď od AI

V Go správač (scheduler) řídí gorutiny, což jsou lehké vlákna. Když funkce provádí síťový požadavek, obvykle se zablokuje na operaci vstupu/výstupu.

Správač Go používá neblokující vstup/výstup a asynchronní systémové volání. Když gorutina čeká na odpověď ze sítě, správač ji přesune do stavu čekání a přepne na vykonávání jiných gorutin.

To umožňuje efektivní využití systémových zdrojů a nezablokuje vlákno OS. Po dokončení síťového požadavku správač obnoví vykonávání gorutiny.

Příklad:

func fetch(url string) {
    resp, err := http.Get(url) // síťový požadavek
    if err != nil {
        log.Fatal(err)
    }
    defer resp.Body.Close()
    // zpracování odpovědi
}

func main() {
    go fetch("http://example.com")
    // ostatní gorutiny běží paralelně
}

Tímto způsobem správač Go efektivně řídí gorutiny, přepíná je při blokujících operacích, jako jsou síťové požadavky.