Курс по 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

Коментари

  1. Двете нишки вървят паралелно и всяка записва резултата си в своя собствена споделена променлива.

  2. Четенето на $x и $y става едва след двете извиквания на .finish, така че резултатите гарантирано са готови: 100 + 400 е 500. Именно присъединяването преди четенето прави стойността надеждна.

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

Две нишки   |   Обещания