Junior — Middle
Môžete vysvetliť koncept ľahkých vlákien a ich rozdiely od bežných vlákien?
sobes.tech AI
Odpoveď od AI
Ľahké vlákna (goroutines v Go) sú abstrakciou pre paralelné vykonávanie kódu, ktorá je ľahšia a efektívnejšia z hľadiska zdrojov ako bežné systémové vlákna.
Rozdiely:
- Zdroje: goroutines zaberajú oveľa menej pamäte (zvyčajne niekoľko kilobajtov), zatiaľ čo systémové vlákno vyžaduje oveľa viac (zvyčajne megabajty).
- Plánovanie: goroutines sú plánované plánovačom Go vnútri procesu, nie operačným systémom, čo umožňuje rýchle prepínanie medzi nimi.
- Vytváranie: spustenie goroutine je veľmi rýchle a lacné, možno ich vytvoriť tisíce alebo aj milióny súčasne.
Príklad vytvorenia goroutine:
func sayHello() {
fmt.Println("Ahoj z goroutine")
}
func main() {
go sayHello() // spustí funkciu v samostatnej goroutine
time.Sleep(time.Second) // čaká, aby goroutine mohla dokončiť
}
Týmto spôsobom umožňujú ľahké vlákna efektívne využívanie paralelizmu bez veľkých nákladov.