Sobes.tech
Junior — Middle

Môžete vysvetliť, čo sú synchronizačné kanály a ako fungujú v programovaní?

sobes.tech AI

Odpoveď od AI

Synchronné kanály v programovaní, najmä v Go, sú kanály, ktoré blokujú odosielateľa, kým príjemca ne prečíta údaje, a naopak. To znamená, že prenos údajov sa deje iba vtedy, keď sú obe strany pripravené.

V Go je kanál bez vyrovnávacej pamäte synchronný. Príklad:

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

// Odoslanie
go func() {
    ch <- 42 // blokuje, kým niekto ne prečíta
}()

// Príjem
val := <-ch // blokuje, kým niekto ne pošle
fmt.Println(val)

Tu odoslanie do kanála ch bude čakať, kým iná gorutina ne prečíta hodnotu, a naopak. Toto umožňuje synchronizovať vykonávanie gorutín a vymieňať údaje bez použitia ďalších mechanizmov synchronizácie.