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
У овом примеру, горутина шаље број у канал и блокира се до читања тог броја од стране главне горутине.