Junior — Middle
Kaip vyksta duomenų perdavimas per nebuferizuotą ryšio kanalą?
sobes.tech AI
Atsakymas iš AI
Duomenų perdavimas per nekapacitavų kanalą Go vyksta sinchroniškai: siuntėjas blokuojasi, kol gavėjas perskaitys duomenis, ir atvirkščiai. Tai užtikrina tiesioginį sinchronizavimą tarp gorutinų.
Pavyzdys:
ch := make(chan int) // nekapacitavų kanalas
// Siuntėjas
go func() {
ch <- 42 // blokuojasi, kol gavėjas perskaitys
}()
// Gavėjas
val := <-ch // blokuojasi, kol pasirodys reikšmė
fmt.Println(val) // išves 42
Taip duomenys perduodami tiesiogiai, be tarpinio saugojimo, užtikrinant sinchronizaciją tarp siuntėjo ir gavėjo.