Sobes.tech
Junior — Middle

Ako sa vykonáva prenos dát cez nebufferovaný komunikačný kanál?

sobes.tech AI

Odpoveď od AI

Prenos dát cez nekapacitný kanál v Go prebieha synchronne: odosielateľ je zablokovaný, kým príjemca ne prečíta dáta, a naopak. To zabezpečuje priame synchronizáciu medzi gorutinami.

Príklad:

ch := make(chan int) // nekapacitný kanál

// Odosielateľ
go func() {
    ch <- 42 // je zablokovaný, kým príjemca ne prečíta
}()

// Príjemca
val := <-ch // je zablokovaný, kým sa neobjaví hodnota
fmt.Println(val) // vypíše 42

Týmto spôsobom sú dáta prenášané priamo, bez medzičasového uloženia, čo zaručuje synchronizáciu medzi odosielateľom a príjemcom.