Junior — Middle
Cum se realizează schimbul de semnale prin canale în sistemul de programare?
sobes.tech AI
Răspuns de la AI
În limbajul Go (Golang), canalele (channels) sunt utilizate pentru schimbul de semnale și date între goroutines, asigurând sincronizarea și comunicarea.
Un canal este un conduct tipizat, prin care se pot trimite și primi valori. Trimiterea și primirea pe un canal blochează goroutine-ul până când cealaltă parte este gata să accepte sau să trimită date, ceea ce permite sincronizarea eficientă a execuției.
Exemplu de schimb de semnale folosind un canal:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Println("Lucrul a început")
time.Sleep(time.Second) // simulare de lucru
fmt.Println("Lucrul s-a încheiat")
done <- true // trimitem semnalul de finalizare
}
func main() {
done := make(chan bool)
go worker(done) // pornim goroutine-ul
<-done // așteptăm semnalul de finalizare
fmt.Println("Funcția principală s-a încheiat")
}
În acest exemplu, canalul done este folosit pentru a transmite semnalul de finalizare al goroutine-ului worker. Funcția principală se blochează la citirea din canal până primește semnalul, ceea ce permite sincronizarea corectă a execuției.