Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Паралелно програмиране / Канали / Четене след края
Тест — Четене след края
В канал са получени всички изпратени стойности. Какво става при
следващия .receive, ако каналът е
още отворен (никога не е затварян)?
| 0 | Хвърля X::Channel::ReceiveOnClosed |
| 1 | Блокира, чакайки стойност, която може никога да не дойде |
| 0 | Връща Nil |
| 0 | Връща празен списък () |
При отворен канал .receive не може да
прецени дали още една стойност е на път, така че чака — потенциално
вечно, ако производителят е спрял, без да затвори. Изключението
X::Channel::ReceiveOnClosed се отнася за случая на
затворен канал: само затворен и празен канал се проваля
бързо, вместо да блокира.