Sobes.tech
Junior — Middle

Jak je v jazyce Golang implementován model konkurence?

sobes.tech AI

Odpověď od AI

V jazyce Go je model konkurence založen na gorutinách a kanálech.

  • Gorutiny jsou lehké vlákna spuštěná klíčovým slovem go. Umožňují spouštět funkce paralelně bez významných nákladů na zdroje.

  • Kanály jsou typované kanály pro výměnu dat mezi gorutinami, zajišťující synchronizaci a bezpečnou výměnu informací.

Příklad:

package main

import (
    "fmt"
    "time"
)

func worker(id int, ch chan string) {
    time.Sleep(time.Second)
    ch <- fmt.Sprintf("Dělník %d hotovo", id)
}

func main() {
    ch := make(chan string)
    for i := 1; i <= 3; i++ {
        go worker(i, ch)
    }

    for i := 1; i <= 3; i++ {
        msg := <-ch
        fmt.Println(msg)
    }
}

V tomto příkladu tři gorutiny provádějí práci paralelně a posílají výsledek do kanálu, ze kterého je hlavní vlákno čte.

Tímto způsobem Go zjednodušuje konkurenční programování, skrývá složitost vláken a synchronizace.