Middle+
Millistel tingimustel kanalilt lugemine jäädavalt blokeeritakse? Mis juhtub, kirjutades nil-kanalile? Kui kirjutada suletud kanalile?
sobes.tech AI
Vastus AI-lt
-
Kanalist lugemine blokeerub igaveseks, kui kanal on tühi ja keegi ei plaani sinna kirjutada (näiteks, kõik saatjad on suletud või puuduvad).
-
Nil-kanalisse kirjutamine (kanal, mis on võrdne nil) blokeerub alati igaveseks, kuna nil-kanal ei ole initsialiseeritud ja ei saa andmeid vastu võtta.
-
Suletud kanalile kirjutamine põhjustab Go-s panic-i (panic), kuna see on keelatud ja loetakse jooksva vea osaks.
Näide:
var ch chan int // nil-kanal
// <-ch // nil-kanalist lugemine blokeerub igaveseks
// ch <- 1 // nil-kanalile kirjutamine blokeerub igaveseks
ch = make(chan int)
close(ch)
// ch <- 2 // panic: saadetis suletud kanalile