Sobes.tech
Назад к вопросам
Junior — Middle
83

Каким образом осуществлять чтение и запись данных через небуферизированные каналы в вашей системе?

Компании, где спрашивали
Эрливидео

Ответ от нейросети

sobes.tech AI

В Go для работы с небуферизированными каналами чтение и запись осуществляются блокирующим образом, то есть операция записи блокирует горутину, пока другая горутина не прочитает значение, и наоборот.

Пример:

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

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

// Чтение из канала (блокируется, пока в канале не появится значение)
value := <-ch
fmt.Println(value) // Выведет 42

Таким образом, для чтения и записи через небуферизированные каналы нужно запускать операции в разных горутинах, чтобы избежать взаимной блокировки. Это позволяет синхронизировать обмен данными между горутинами без использования дополнительных примитивов синхронизации.