Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Конкурентне програмування / Потоки / Вправи / Два потоки

Розв’язання: Два потоки

Ось одне з можливих розв’язань задачі.

Код

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. Саме приєднання перед читанням робить значення надійним.

Навігація курсом

Два потоки   |   Промиси