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.