Senior
რა ხდება ბუფერთან, როდესაც წერის goroutine-ები ბლოკირებულია?
sobes.tech AI
პასუხი AI-სგან
Пишущие горутины в Go будут заблокированы, когда буфер канала заполнен.
Если канал буферизирован, то запись в него блокируется, когда количество элементов в буфере достигает его ёмкости. Пока кто-то не прочитает из канала и не освободит место, запись будет ждать.
Пример:
ch := make(chan int, 2) // буфер на 2 элемента
ch <- 1 // записали первый элемент
ch <- 2 // записали второй элемент
ch <- 3 // здесь горутина заблокируется, пока кто-то не прочитает из ch
Таким образом, блокировка происходит при попытке записи в полный буфер.