Sobes.tech
Junior — Middle

Kako se vrši prenos podataka putem nebuferskog kanala?

sobes.tech АИ

Одговор од АИ

У Go, небуфериран канал (без буфера) обезбеђује синхронизован пренос података између горутинa. То значи да се слање вредности у канал блокира док друга горутина не прими ту вредност из канала, и обратно — пријем се блокира док не буде вредност за читање.

На овај начин, пренос података преко небуферираног канала се одвија са синхронизацијом пошиљаоца и примаоца, што гарантује размену података без међуспремника.

Пример:

ch := make(chan int) // небуфериран канал

go func() {
    ch <- 42 // слање се блокира док не прочита неко
}()

value := <-ch // пријем блокира извршавање док се не појави вредност
fmt.Println(value) // ће приказати 42

У овом примеру, горутина шаље број у канал и блокира се до читања тог броја од стране главне горутине.