Sobes.tech
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.