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.