Курс языка программирования 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. Именно присоединение перед чтением и делает значение надёжным.

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

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