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