Raku kurss / Funkcionālā, paralēlā, reaktīvā un tīmekļa programmēšana / Paralēlā programmēšana / Kanāli
Kanāla aizvēršana
Kad ražotājam vairs nav ko sūtīt, tas kanālam izsauc
.close. Aizvēršana pavēsta patērētājam, ka straume ir
beigusies.
Ērtākais veids, kā patērēt aizvērtu kanālu, ir .list,
kas dod jums katru atlikušo vērtību un beidzas, tiklīdz kanāls ir
aizvērts:
my $c = Channel.new;
$c.send(1);
$c.send(2);
$c.send(3);
$c.close;
say $c.list; # (1 2 3)Tā kā .list gaida kanāla aizvēršanu, tā lieliski der
uzdevumam «savāc visu, ko ražotājs sūta». Rezultātu var apstrādāt kā
jebkuru citu sarakstu — saskaitīt, saskaitīt elementus un tā tālāk:
my $c = Channel.new;
$c.send($_) for 1..5;
$c.close;
say [+] $c.list; # 15Aizvēršana ir tas, pēc kā patērētājs zina, kad apstāties. Bez tās
.list (vai .receive cikls) mūžīgi gaidītu
vērtību, kas nekad nepienāk. Vienmēr aizveriet kanālu, kad sūtīšana ir
pabeigta.
Prakse
Jūs gaida 1 viktorīna par šī temata saturu.
Kursa navigācija
← Viktorīna — Kanāli | Viktorīna — Kanāla aizvēršana →
💪 Vai arī dodieties tieši uz šīs sadaļas
vingrinājumiem.