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) // პანიკა: უკვე დახურულ არხზე დახურვა