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 // се блокира
Така, блокирането се случва при опит да се изпрати елемент в напълно запълнен буфер на канала.