Курс языка программирования Raku / Функциональное, конкурентное, реактивное и веб-программирование / Конкурентное программирование / Промисы

start и await

Ключевое слово start выполняет блок в фоне и немедленно возвращает Promise:

my $p = start { 2 + 2 };

Работа идёт в пуле потоков Raku, пока ваша программа продолжает своё дело. Чтобы получить результат, используйте await, который дожидается завершения промиса и отдаёт его значение:

my $p = start { 2 + 2 };
say await $p; # 4

await блокирует выполнение ровно настолько, чтобы промис успел завершиться, а затем возвращает то, что выдал блок, — здесь 4. Если работа к моменту ожидания уже сделана, результат приходит сразу.

Эта пара — start для запуска, await для сбора — и есть основа конкурентности на промисах. Можно запустить несколько кусков работы, дать им идти одновременно и дождаться их результатов, когда будете готовы; именно на этом и строится следующая тема.

Практика

Пройдите 1 тест по содержанию этой темы.

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

Промисы   |   Тест — Промисы


💪 Или перейдите сразу к упражнениям этого раздела.