Sobes.tech
Junior — Middle

Vysvětlete koncept konkurence v jazyce Go a její roli při vývoji paralelních aplikací

sobes.tech AI

Odpověď od AI

V jazyce Go je konkurence schopnost programu vykonávat viacero úloh súčasne, efektívne využívajúc zdroje procesora. V jazyku Go sa na to používajú gorutiny, ktoré sú ľahké vlákna spustené kľúčovým slovom go.

Konkurencia umožňuje písať paralelné aplikácie, 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, čím sa demonštruje konkurencia v Go.