Sobes.tech
Middle+

Onder welke omstandigheden wordt het lezen uit een kanaal voor altijd geblokkeerd? Wat gebeurt er bij schrijven naar een nil-kanaal? Bij schrijven naar een gesloten kanaal?

sobes.tech AI

Antwoord van AI

  • Lezen uit een kanaal wordt voor altijd geblokkeerd als het kanaal leeg is en niemand van plan is om erin te schrijven (bijvoorbeeld, alle zenders zijn gesloten of afwezig).

  • Schrijven naar een nil-kanaal (een kanaal gelijk aan nil) wordt altijd voor altijd geblokkeerd, omdat het nil-kanaal niet geïnitialiseerd is en geen gegevens kan ontvangen.

  • Schrijven naar een gesloten kanaal veroorzaakt een panic in Go, omdat dit verboden is en wordt beschouwd als een runtime-fout.

Voorbeeld:

var ch chan int // nil-kanaal

// <-ch // lezen uit nil-kanaal wordt voor altijd geblokkeerd

// ch <- 1 // schrijven naar nil-kanaal wordt voor altijd geblokkeerd

ch = make(chan int)
close(ch)
// ch <- 2 // panic: verzenden op een gesloten kanaal