Junior
Kas ir goroutines?
sobes.tech AI
Atbilde no AI
Vieglās izpildes plūsmas, kuras pārvalda Go izpildes vide. Tās tiek izveidotas ar atslēgvārdu go pirms funkcijas izsaukšanas.
Galvenās īpašības:
- Mazāka atmiņas patēriņš: Gorušīna sākas ar nelielu steka izmēru (parasti 2 KB), kas var dinamiski palielināties vai samazināties.
- Ātrāka izveide: Gorušīnas izveide ir daudz ātrāka nekā operētājsistēmas pavediena izveide.
- Multiplēksēšana uz operētājsistēmas pavedieniem: Daudzas gorušīnas var tikt multiplēkotas uz mazāku skaitu operētājsistēmas pavedienu, ko plāno Go izpildes vide.
- Kooperatīva plānošana: Gorušīnas netiek piespiedu kārtā izstumtas; tās brīvprātīgi nodod kontroli plānotājam (piemēram, bloķējošu izsaukumu vai tiešu
runtime.Gosched()izsaukumu gadījumā).
Piemērs izveidei:
package main
import (
"fmt"
"time"
)
func sayHello() {
fmt.Println("Sveiciens no gorušīnas!")
}
func main() {
go sayHello() // Sākam sayHello kā gorušīnu
fmt.Println("Sveiciens no galvenās funkcijas!")
time.Sleep(1 * time.Second) // Lai galvenā funkcija nepabeigtos pirms gorušīnas
}
Salīdzinājums ar pavedieniem:
| Raksturlielums | Go gorušīnas | OS pavedieni |
|---|---|---|
| Pārvaldība | Go izpildes vide | Operētājsistēma |
| Atmiņas patēriņš | Zems, dinamisks steks | Augsts, fiksēts steks |
| Izveide | Ātra | Lēna |
| Plānošana | Kooperatīva | Piespiedu izstumšana |
| Sinhronizācija | Kanāli, sync pakotne | Mūtes, semafori OS |