Junior — Middle
100 elementli kanal ishlatilganda blokirovka qachon yuz beradi?
sobes.tech AI
AIdan javob
Go tilida, 100 elementli bufer o'lchamiga ega kanal, yuboruvchining bloklanmasdan 100 gacha qiymat yuborish imkonini beradi.
Bloklanish, kanalning buferida allaqachon 100 element bo'lsa va yuboruvchi goroutine 101-chi elementni yubormoqchi bo'lsa yuzaga keladi. Bufer to'liq bo'lgani uchun, yuborish bloklanadi, kamida bitta element o'qilguncha.
Misol:
ch := make(chan int, 100)
// Kanalni to'ldiramiz
for i := 0; i < 100; i++ {
ch <- i // bloklanmaydi
}
// Keyingi yuborish, element o'qilguncha bloklanadi
ch <- 101 // bloklanadi
Shunday qilib, bloklanish, to'liq to'ldirilgan kanal buferiga element yuborishga harakat qilganda yuzaga keladi.