Junior — Middle
Wanneer precies treedt de blokkering op bij het gebruik van een kanaal met een grootte van 100 elementen?
sobes.tech AI
Antwoord van AI
In Go betekent een kanaal met een buffer grootte van 100 elementen dat je tot 100 waarden kunt sturen zonder dat de zender geblokkeerd wordt.
De blokkering gebeurt op het moment dat de buffer van het kanaal al 100 elementen bevat en de goroutine die stuurt probeert het 101e element te sturen. Omdat de buffer vol is, wordt de verzending geblokkeerd totdat iemand ten minste één element uit het kanaal leest.
Voorbeeld:
ch := make(chan int, 100)
// Vul het kanaal
for i := 0; i < 100; i++ {
ch <- i // wordt niet geblokkeerd
}
// De volgende verzending wordt geblokkeerd totdat een element gelezen wordt
ch <- 101 // wordt geblokkeerd
Dus, de blokkering gebeurt bij het proberen een element te sturen naar een volledig gevuld kanaalbuffer.