Sobes.tech
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.