Junior — Middle
Mi a különbség a goroutine és a rendszer szál között a feladatok végrehajtásának kontextusában?
sobes.tech MI
Válasz az MI-től
A gorutina egy könnyű, a Go (runtime) futtatókörnyezet által kezelt végrehajtási egység, amely nagyon kevés memóriát használ, és egyszerre sok példányban indítható. A rendszer szál (thread) egy nehezebb ütemezési egység az operációs rendszer részéről.
Fő különbségek:
- A gorutinok sokkal könnyebbek az erőforrások szempontjából, mint a rendszer szálak.
- A gorutinok ütemezése a Go runtime belsejében történik, nem az OS által.
- Ezrek dolgozhatnak egyszerre, míg a rendszer szálak száma általában kevesebb a létrehozási és váltási költségek miatt.
Gorutina létrehozásának példája:
func feladat() {
fmt.Println("Feladat végrehajtása")
}
func main() {
go feladat() // gorutina indítása
time.Sleep(time.Second) // várunk, hogy a gorutina befejeződjön
}
Így a gorutinek lehetővé teszik sok feladat hatékony párhuzamos végrehajtását kisebb költséggel.