Middle
Kaip sukelti paniką dirbant su kanalu? Kas vyksta su operacijomis su nil-kanalu ir uždaru kanalu?
sobes.tech AI
Atsakymas iš AI
Go kalboje, panika įvyksta šiais atvejais:
- Siunčiant reikšmę uždarytam kanalui (
chan <- value) įvyksta panika. - Uždarius jau uždarytą kanalą (
close(chan)) įvyksta panika.
Dėl nil-kanalų:
- Operacijos siųsti ir gauti su nil-kanalu blokuojasi amžinai (deadlock), bet nesukelia panikos.
Pavyzdys:
var ch chan int // nil-kanalas
// <-ch // blokuojasi amžinai
// ch <- 1 // blokuojasi amžinai
ch = make(chan int)
close(ch)
// ch <- 1 // panic: siuntimas uždarytam kanalui
close(ch) // panic: jau uždaryto kanalo uždarymas