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