Middle
Kanal bilan ishlashda panikani qanday chaqirish mumkin? Nil-kanal va yopilgan kanal bilan operatsiyalar paytida nima bo'ladi?
sobes.tech AI
AIdan javob
Go tilida, kanallarda ishlashda panika quyidagi holatlarda yuzaga keladi:
- Yopiq kanalga qiymat yuborish (
chan <- value) panikaga olib keladi. - Allaqachon yopilgan kanalni yopish (
close(chan)) panikaga olib keladi.
Nil-kanallarga kelsak:
- Nil-kanal bilan yuborish va qabul qilish operatsiyalari doim bloklanadi (deadlock), lekin panikaga olib kelmaydi.
Misol:
var ch chan int // nil-kanal
// <-ch // doim bloklanadi
// ch <- 1 // doim bloklanadi
ch = make(chan int)
close(ch)
// ch <- 1 // panic: yopiq kanalda yuborish
close(ch) // panic: allaqachon yopilgan kanaldan yopish