Cursus Raku / Functioneel, concurrent, reactief en webprogrammeren / Concurrent programmeren / Channels / Ontvangen voorbij het einde
Quiz — Ontvangen voorbij het einde
Van een kanaal zijn alle verstuurde waarden ontvangen. Wat gebeurt er
bij de volgende .receive als het kanaal
nog open is (nooit gesloten)?
| 0 | Het werpt X::Channel::ReceiveOnClosed |
| 1 | Het blokkeert en wacht op een waarde die misschien nooit komt |
| 0 | Het geeft Nil terug |
| 0 | Het geeft een lege lijst () terug |
Op een open kanaal kan .receive niet
zien of er nog een waarde onderweg is, dus wacht het — mogelijk eeuwig,
als de producent gestopt is zonder te sluiten. De exceptie
X::Channel::ReceiveOnClosed hoort bij het
gesloten geval: alleen een gesloten, leeg kanaal faalt
snel in plaats van te blokkeren.