Sobes.tech
Middle

Kanal ilə işləyərkən panik yaratmaq necə olar? Nil-kanal və bağlanmış kanal ilə əməliyyatlar zamanı nə baş verir?

sobes.tech Süni İntellekt

AI-dan cavab

Go-da kanallarla işləyərkən panika aşağıdakı hallarda baş verir:

  • Bağlanmış kanala dəyər göndərmək (chan <- value) panikaya səbəb olur.
  • Artıq bağlanmış kanalı bağlamaq (close(chan)) panikaya səbəb olur.

Nil-kanallara gəldikdə:

  • Nil-kanalla göndərmə və qəbul əməliyyatları həmişə bloklanır (deadlock), amma panikaya səbəb olmur.

Nümunə:

var ch chan int // nil-kanal

// <-ch // həmişə bloklanır
// ch <- 1 // həmişə bloklanır

ch = make(chan int)
close(ch)

// ch <- 1 // panic: bağlanmış kanala göndərmə

close(ch) // panic: artıq bağlanmış kanalı bağlamaq