Junior — Middle
Millal täpselt toimub blokeerimine, kasutades kanalit, mille suurus on 100 elementi?
sobes.tech AI
Vastus AI-lt
Go keeles kanalil, mille mahutavus on 100 elementi, tähendab, et sinna saab saata kuni 100 väärtust ilma saatjat blokeerimata.
Blokeerimine toimub siis, kui kanali buferis on juba 100 elementi ja saatja goroutine püüab saata 101. elementi. Kuna bufer on täis, jääb saatmine ootele kuni keegi ei loe vähemalt ühte elementi kanalist.
Näide:
ch := make(chan int, 100)
// Täidame kanali
for i := 0; i < 100; i++ {
ch <- i // ei blokeeru
}
// Järgmine saatmine blokeerub kuni ühe elemendi lugemiseni
ch <- 101 // blokeerub
Seega toimub blokeerimine, kui üritate saata elementi täielikult täidetud kanali buferisse.