Sobes.tech
Junior — Middle

Jak je v systému programování prováděna výměna signálů pomocí kanálů?

sobes.tech AI

Odpověď od AI

V jazyce Go (Golang) se kanály (channels) používají k výměně signálů a dat mezi gorutinami, čímž se zajišťuje synchronizace a komunikace.

Kanál je typovaný průchod, kterým lze odesílat a přijímat hodnoty. Odeslání a přijetí na kanálu blokují gorutinu, dokud druhá strana není připravena přijmout nebo odeslat data, což umožňuje efektivní synchronizaci provádění.

Příklad výměny signálů pomocí kanálu:

package main

import (
    "fmt"
    "time"
)

func worker(done chan bool) {
    fmt.Println("Práce začala")
    time.Sleep(time.Second) // simulace práce
    fmt.Println("Práce skončila")
    done <- true // odeslání signálu o dokončení
}

func main() {
    done := make(chan bool)
    go worker(done) // spuštění gorutiny
    <-done           // čekání na signál o dokončení
    fmt.Println("Hlavní funkce dokončena")
}

V tomto příkladu je kanál done použit k přenosu signálu o dokončení gorutiny worker. Hlavní funkce se zablokuje na čtení z kanálu, dokud signál nedostane, což umožňuje správnou synchronizaci provádění.