Курс Raku / Функційне, конкурентне, реактивне та веб-програмування / Конкурентне програмування / Потоки
Запуск потоку
Thread.start приймає блок і виконує його в новому
потоці, повертаючи об’єкт Thread, що представляє роботу,
яка триває:
my $t = Thread.start({ say 'hello from the thread' });Блок виконується конкурентно з кодом, що йде далі. Головна програма не чекає на нього автоматично — вона продовжується негайно, а потік робить свою роботу у фоні.
Одна дрібна, але важлива деталь: аргументом має бути блок коду.
Порожня пара фігурних дужок { } є порожнім
хешем, а не порожнім блоком, тож потокові завжди
потрібне тіло, яке щось справді робить:
my $t = Thread.start({ 2 + 2 }); # нормально: блок із тіломОскільки головна програма й потік тепер працюють водночас, ви не можете покладатися на порядок, у якому з’являється їхній вивід, — хіба що явно дочекаєтеся завершення потоку, і це тема наступної теми.
Практика
Виконайте 1 тест за змістом цієї теми.
Навігація курсом
← Потоки | Тест — Потоки →
💪 Або перейдіть одразу до вправ цього розділу.