Sobes.tech
Junior — Middle

Kad tieši notiks bloķēšana, izmantojot kanālu ar 100 elementiem?

sobes.tech AI

Atbilde no AI

Go valodā kanāls ar 100 elementu lielumu nozīmē, ka tajā var nosūtīt līdz 100 vērtībām bez sūtītāja bloķēšanas.

Bloķēšana notiks brīdī, kad kanāla buferis jau saturēs 100 elementus, un sūtīšanas gorutīna mēģinās nosūtīt 101. elementu. Tā kā buferis ir pilns, sūtīšana tiks bloķēta, kamēr kāds neizlasīs vismaz vienu elementu no kanāla.

Piemērs:

ch := make(chan int, 100)

// Aizpildām kanālu
for i := 0; i < 100; i++ {
    ch <- i // netiek bloķēts
}

// Nākamais sūtījums tiks bloķēts, kamēr netiks izlasīts viens elements
ch <- 101 // tiek bloķēts

Tādējādi bloķēšana notiek, mēģinot nosūtīt elementu pilnībā aizpildītā kanāla buferī.