Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Паралелно програмиране / Канали / Четене след края

Тест — Четене след края

В канал са получени всички изпратени стойности. Какво става при следващия .receive, ако каналът е още отворен (никога не е затварян)?

0Хвърля X::Channel::ReceiveOnClosed
1Блокира, чакайки стойност, която може никога да не дойде
0Връща Nil
0Връща празен списък ()

При отворен канал .receive не може да прецени дали още една стойност е на път, така че чака — потенциално вечно, ако производителят е спрял, без да затвори. Изключението X::Channel::ReceiveOnClosed се отнася за случая на затворен канал: само затворен и празен канал се проваля бързо, вместо да блокира.

Навигация в курса

Четене след края   |   Получете стойност