Sobes.tech
Junior — Middle

Hogyan történik az adatok átvitele nem pufferelt kommunikációs csatornán keresztül?

sobes.tech MI

Válasz az MI-től

A Go-ban nem pufferelt csatornán keresztüli adatátvitel szinkron módon történik: a küldő blokkolódik, amíg a fogadó nem olvassa az adatokat, és fordítva. Ez közvetlen szinkronizációt biztosít a goroutine-ok között.

Példa:

ch := make(chan int) // nem pufferelt csatorna

// Küldő
go func() {
    ch <- 42 // blokkolódik, amíg a fogadó nem olvassa
}()

// Fogadó
val := <-ch // blokkolódik, amíg érték nem jelenik meg
fmt.Println(val) // kiírja, hogy 42

Így az adatok közvetlenül kerülnek át, közbenső tárolás nélkül, garantálva a szinkronizációt a küldő és a fogadó között.