Junior — Middle
Jak je v jazyce Go implementováno paralelní a sekvenční zpracování úkolů?
sobes.tech AI
Odpověď od AI
V jazyce Go se paralelní zpracování úkolů realizuje pomocí gorutin, což jsou lehké vlákna, která se spouštějí klíčovým slovem go. Gorutina může být spuštěna pro asynchronní provedení funkce a bude běžet paralelně s ostatními gorutinami.
Sekvenční zpracování je jednoduché volání funkcí bez použití go, kdy se úkoly vykonávají jeden po druhém.
Příklad paralelního zpracování:
package main
import (
"fmt"
"time"
)
func úkol(id int) {
fmt.Printf("Úkol %d začal\n", id)
time.Sleep(time.Second)
fmt.Printf("Úkol %d dokončen\n", id)
}
func main() {
for i := 1; i <= 3; i++ {
go úkol(i) // spouštíme gorutinu
}
time.Sleep(2 * time.Second) // čekáme na dokončení gorutin
}
V tomto příkladu jsou tři úkoly spuštěny paralelně. Pokud odstraníme go, budou se úkoly vykonávat sekvenčně.
Pro synchronizaci a správu gorutin se často používají kanály (channels) a sync.WaitGroup.