Sobes.tech
Junior — Middle

Ako sa v systéme programovania vykonáva výmena signálov pomocou kanálov?

sobes.tech AI

Odpoveď od AI

V jazyku Go (Golang) sa kanály (channels) používajú na výmenu signálov a dát medzi gorutinami, čím zabezpečujú synchronizáciu a komunikáciu.

Kanál je typizovaný vodič, ktorým je možné odosielať a prijímať hodnoty. Odoslanie a prijatie na kanáli blokuje gorutinu, kým druhá strana nie je pripravená prijať alebo odoslať dáta, čo umožňuje efektívnu synchronizáciu vykonávania.

Príklad výmeny signálov pomocou kanála:

package main

import (
    "fmt"
    "time"
)

func worker(done chan bool) {
    fmt.Println("Práca začala")
    time.Sleep(time.Second) // simulácia práce
    fmt.Println("Práca skončila")
    done <- true // odoslanie signálu o ukončení
}

func main() {
    done := make(chan bool)
    go worker(done) // spustenie gorutiny
    <-done           // čakanie na signál o ukončení
    fmt.Println("Hlavná funkcia je ukončená")
}

V tomto príklade sa kanál done používa na prenos signálu o ukončení gorutiny worker. Hlavná funkcia sa zablokuje na čítaní z kanála, kým nedostane signál, čo umožňuje správnu synchronizáciu vykonávania.