Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Паралелно програмиране / Нишки / Exercises / Две нишки
Решение: Две нишки
Ето едно възможно решение на задачата.
Код
my ($x, $y);
my $a = Thread.start({ $x = 10 * 10 });
my $b = Thread.start({ $y = 20 * 20 });
$a.finish;
$b.finish;
say $x + $y;🦋 Намерете програмата във файла two-threads.raku.
Изход
500Коментари
Двете нишки вървят паралелно и всяка записва резултата си в своя собствена споделена променлива.
Четенето на
$xи$yстава едва след двете извиквания на.finish, така че резултатите гарантирано са готови:100 + 400е500. Именно присъединяването преди четенето прави стойността надеждна.