Sobes.tech
Junior — Middle

Vysvetlite koncept konkurencie v jazyku Go a jeho úlohu pri vývoji paralelných aplikácií

sobes.tech AI

Odpoveď od AI

V jazyku Go je konkurencia (concurrency) schopnosť programu vykonávať viacero úloh súčasne, efektívne využívajúc zdroje procesora. V jazyku Go sa na to používajú goroutines, ktoré sú ľahké vlákna spustené kľúčovým slovom go.

Konkurencia umožňuje písanie paralelných aplikácií, kde sa rôzne časti kódu vykonávajú súčasne, čo zvyšuje výkon a odozvu programov.

Na synchronizáciu a výmenu dát medzi gorutinami sa používajú kanály (channels), ktoré zabezpečujú bezpečnú komunikáciu bez explicitného blokovania.

Príklad:

package main
import (
    "fmt"
    "time"
)

func worker(id int) {
    fmt.Printf("Pracovník %d začína\n", id)
    time.Sleep(time.Second)
    fmt.Printf("Pracovník %d končí\n", id)
}

func main() {
    for i := 1; i <= 3; i++ {
        go worker(i) // spustenie gorutiny
    }
    time.Sleep(2 * time.Second) // čakanie na dokončenie gorútin
}

V tomto príklade bežia tri gorutiny súčasne, demonštrujúc konkurenciu v Go.