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.