Sobes.tech
Junior — Middle

Кога точно ще настъпи блокирането при използване на канал с размер 100 елемента?

sobes.tech AI

Отговор от AI

В Go, канал с размер на буфера 100 елемента означава, че в него може да се изпратят до 100 стойности без блокиране на изпращача.

Блокирането ще се случи в момента, когато буферът на канала вече съдържа 100 елемента и горутината, която изпраща, се опита да изпрати 101-ия елемент. Тъй като буферът е пълен, изпращането ще бъде блокирано, докато някой не прочете поне един елемент от канала.

Пример:

ch := make(chan int, 100)

// Попълваме канала
for i := 0; i < 100; i++ {
    ch <- i // не се блокира
}

// Следващото изпращане ще бъде блокирано, докато не бъде прочетен елемент
ch <- 101 // блокира

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