Sobes.tech
Junior — Middle

Какво се случва, ако извършите запис в канал, чийто буфер е напълно запълнен?

sobes.tech AI

Отговор от AI

В Go, ако се опитате да запишете стойност в канал с буфер, който е напълно запълнен, операцията по запис ще се блокира, докато в канала не се освободи място (т.е. докато някой не прочете от канала). Това осигурява синхронизация между горутините и предотвратява загубата на данни.

Пример:

ch := make(chan int, 2) // буфер за 2 елемента
ch <- 1
ch <- 2
// ch <- 3 // тук записът ще се блокира, докато някой не прочете от ch