Sobes.tech
Senior

რა ხდება ბუფერთან, როდესაც წერის goroutine-ები ბლოკირებულია?

sobes.tech AI

პასუხი AI-სგან

Пишущие горутины в Go будут заблокированы, когда буфер канала заполнен.

Если канал буферизирован, то запись в него блокируется, когда количество элементов в буфере достигает его ёмкости. Пока кто-то не прочитает из канала и не освободит место, запись будет ждать.

Пример:

ch := make(chan int, 2) // буфер на 2 элемента

ch <- 1 // записали первый элемент
ch <- 2 // записали второй элемент
ch <- 3 // здесь горутина заблокируется, пока кто-то не прочитает из ch

Таким образом, блокировка происходит при попытке записи в полный буфер.