Sobes.tech
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