Junior — Middle
Hogyan valósítható meg két goroutine közötti információcsere a Go nyelvben?
sobes.tech MI
Válasz az MI-től
A Go nyelvben két goroutine közötti információcsere általában csatornák (channels) segítségével valósul meg. A csatornák lehetővé teszik az adatok biztonságos átvitelét a goroutine-ok között és azok szinkronizálását.
Példa csatornán keresztüli csere:
package main
import (
"fmt"
)
func sender(ch chan<- string) {
ch <- "Üdv a sender-től"
}
func receiver(ch <-chan string) {
msg := <-ch
fmt.Println("Megkapott üzenet:", msg)
}
func main() {
ch := make(chan string)
go sender(ch)
go receiver(ch)
// Várunk, hogy a goroutine-ok befejeződjenek
var input string
fmt.Scanln(&input)
}
Itt a sender egy stringet küld a csatornára, a receiver pedig olvassa azt. A csatornák biztosítják az adatok biztonságos cseréjét mutexek vagy más szinkronizációs mechanizmusok használata nélkül.