Sobes.tech
Middle

როგორ გამოიწვიოს პანიკა არხთან მუშაობისას? რა ხდება nil-არხთან და დახურულ არხთან ოპერაციების დროს?

sobes.tech AI

პასუხი AI-სგან

Go-ში, როდესაც მუშაობთ არხებთან, პანიკა ხდება შემდეგ შემთხვევებში:

  • ღია არხზე მნიშვნელობის გადაცემა (chan <- value) იწვევს პანიკას.
  • უკვე დახურული არხის დახურვა (close(chan)) იწვევს პანიკას.

რაც შეეხება nil-არხებს:

  • nil-არხებთან გადაცემა და მიღება ოპერაციები მარადიულად ბლოკავს (deadlock), მაგრამ არ იწვევს პანიკას.

მაგალითი:

var ch chan int // nil-არხი

// <-ch // მარადიულად ბლოკავს
// ch <- 1 // მარადიულად ბლოკავს

ch = make(chan int)
close(ch)

// ch <- 1 // პანიკა: გადაცემა დახურულ არხზე

close(ch) // პანიკა: უკვე დახურულ არხზე დახურვა