Junior — Middle
How is signal exchange carried out using channels in a programming system?
sobes.tech AI
Answer from AI
In the Go (Golang) language, channels are used for signaling and data exchange between goroutines, providing synchronization and communication.
A channel is a typed conduit through which values can be sent and received. Sending and receiving on a channel block the goroutine until the other side is ready to receive or send data, which allows for efficient synchronization.
Example of signaling using a channel:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Println("Work started")
time.Sleep(time.Second) // simulate work
fmt.Println("Work finished")
done <- true // send completion signal
}
func main() {
done := make(chan bool)
go worker(done) // start goroutine
<-done // wait for completion signal
fmt.Println("Main function finished")
}
In this example, the done channel is used to send a signal about the completion of the worker goroutine. The main function blocks on reading from the channel until it receives the signal, which allows for proper synchronization.