Sobes.tech
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.