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

Запуск потоку

Thread.start приймає блок і виконує його в новому потоці, повертаючи об’єкт Thread, що представляє роботу, яка триває:

my $t = Thread.start({ say 'hello from the thread' });

Блок виконується конкурентно з кодом, що йде далі. Головна програма не чекає на нього автоматично — вона продовжується негайно, а потік робить свою роботу у фоні.

Одна дрібна, але важлива деталь: аргументом має бути блок коду. Порожня пара фігурних дужок { } є порожнім хешем, а не порожнім блоком, тож потокові завжди потрібне тіло, яке щось справді робить:

my $t = Thread.start({ 2 + 2 }); # нормально: блок із тілом

Оскільки головна програма й потік тепер працюють водночас, ви не можете покладатися на порядок, у якому з’являється їхній вивід, — хіба що явно дочекаєтеся завершення потоку, і це тема наступної теми.

Практика

Виконайте 1 тест за змістом цієї теми.

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

Потоки   |   Тест — Потоки


💪 Або перейдіть одразу до вправ цього розділу.