Sobes.tech
Back to questions
Junior — Middle
82

Объясните принцип функционирования небуферизованного канала передачи данных

Companies where asked
Эрливидео
Магнит Тех

Answer from AI

sobes.tech AI

Небуферизованный канал в Go — это канал с ёмкостью 0, то есть он не хранит значения внутри. Отправка в такой канал блокируется до тех пор, пока другой горутина не примет значение, и наоборот — приём блокируется, пока не появится отправитель.

Это обеспечивает синхронизацию между горутинами: отправитель и получатель должны встретиться одновременно для передачи данных.

Пример:

ch := make(chan int) // небуферизованный канал

// Отправка
go func() {
    ch <- 42 // блокируется, пока кто-то не прочитает
}()

// Приём
val := <-ch // блокируется, пока кто-то не отправит
fmt.Println(val) // выведет 42

Такой канал полезен для синхронизации и передачи данных "по требованию" без буферизации.