Back to questions
Junior — Middle
85
Каким образом осуществлять чтение и запись данных через небуферизированные каналы в вашей системе?
Companies where asked
Эрливидео
Answer from AI
sobes.tech AI
В Go для работы с небуферизированными каналами чтение и запись осуществляются блокирующим образом, то есть операция записи блокирует горутину, пока другая горутина не прочитает значение, и наоборот.
Пример:
ch := make(chan int) // небуферизированный канал
// Запись в канал (блокируется, пока кто-то не прочитает)
go func() {
ch <- 42
}()
// Чтение из канала (блокируется, пока в канале не появится значение)
value := <-ch
fmt.Println(value) // Выведет 42
Таким образом, для чтения и записи через небуферизированные каналы нужно запускать операции в разных горутинах, чтобы избежать взаимной блокировки. Это позволяет синхронизировать обмен данными между горутинами без использования дополнительных примитивов синхронизации.