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