Sobes.tech
Junior — Middle

Kako se razmenjuju signali putem kanala u sistemu programiranja?

sobes.tech АИ

Одговор од АИ

U jeziku Go (Golang), kanali (channels) se koriste za razmenu signala i podataka između gorutina, obezbeđujući sinhronizaciju i komunikaciju.

Kanal je tipizirani cevovod kroz koji se mogu slati i primati vrednosti. Slanje i primanje na kanalu blokira gorutinu dok druga strana ne bude spremna da primi ili pošalje podatke, što omogućava efikasnu sinhronizaciju izvršenja.

Primer razmene signala pomoću kanala:

package main

import (
    "fmt"
    "time"
)

func worker(done chan bool) {
    fmt.Println("Rad je počeo")
    time.Sleep(time.Second) // simulacija rada
    fmt.Println("Rad je završen")
    done <- true // slanje signala o završetku
}

func main() {
    done := make(chan bool)
    go worker(done) // pokretanje gorutine
    <-done           // čekanje na signal završetka
    fmt.Println("Glavna funkcija je završena")
}

U ovom primeru, kanal done se koristi za prenos signala o završetku gorutine worker. Glavna funkcija blokira na čitanju iz kanala dok ne primi signal, što omogućava ispravnu sinhronizaciju izvršenja.