Sobes.tech
Middle

Kanal ile çalışırken paniği nasıl tetiklersiniz? Nil-kanal ve kapatılmış kanal ile işlemler sırasında ne olur?

sobes.tech yapay zeka

AI'dan gelen yanıt

Go'da kanallarla çalışırken panik şu durumlarda ortaya çıkar:

  • Kapanmış bir kanala değer göndermek (chan <- value) panik oluşturur.
  • Zaten kapanmış bir kanalı kapatmak (close(chan)) panik oluşturur.

Nil-kanallarla ilgili olarak:

  • Nil-kanallarla gönderme ve alma işlemleri sonsuza kadar bloklanır (deadlock), ancak panik oluşturmaz.

Örnek:

var ch chan int // nil-kanal

// <-ch // sonsuza kadar bloklanır
// ch <- 1 // sonsuza kadar bloklanır

ch = make(chan int)
close(ch)

// ch <- 1 // panic: kapalı kanala gönderim

close(ch) // panic: kapalı kanalı tekrar kapatma