Sobes.tech
Junior — Middle

Cum se realizează transmiterea datelor printr-un canal de comunicare fără buffer?

sobes.tech AI

Răspuns de la AI

Transferul de date printr-un canal fără buffer în Go are loc sincron: expeditorul se blochează până când receptorul citește datele, și invers. Acest lucru asigură o sincronizare directă între goroutine-uri.

Exemplu:

ch := make(chan int) // canal fără buffer

// Expeditor
go func() {
    ch <- 42 // se blochează până când receptorul citește
}()

// Receptor
val := <-ch // se blochează până apare o valoare
fmt.Println(val) // va afișa 42

Astfel, datele sunt transmise direct, fără stocare intermediară, garantând sincronizarea între expeditor și receptor.