Sobes.tech
Junior — Middle

Ako zorganizovať interakciu a prenos dát cez kanály v systéme?

sobes.tech AI

Odpoveď od AI

V jazyku Go je interakcia medzi gorutinami často organizovaná cez kanály (channels), ktoré sú typované potrubia na prenos dát.

Na prenos dát sa vytvorí kanál pomocou make(chan Typ). Gorutiny môžu posielať dáta do kanála pomocou operátora <-, a tiež prijímať dáta z toho istého kanála, čo zabezpečuje synchronizáciu.

Príklad:

package main

import (
    "fmt"
    "time"
)

func výrobca(ch chan<- int) {
    for i := 0; i < 5; i++ {
        ch <- i // odoslanie dát
        time.Sleep(time.Millisecond * 500)
    }
    close(ch) // zatvoríme kanál, aby sme signalizovali koniec
}

func spotrebiteľ(ch <-chan int) {
    for val := range ch { // prijímanie dát z kanála
        fmt.Println("Prijaté:", val)
    }
}

func main() {
    ch := make(chan int)
    go výrobca(ch)
    spotrebiteľ(ch)
}

Týmto spôsobom kanály umožňujú bezpečný a efektívny prenos dát medzi gorutinami, čím sa predchádza podmienkam súťaže a blokovaniu.