Курс по Raku / Функционално, паралелно, реактивно и уеб програмиране / Паралелно програмиране / Нишки

Стартиране на нишка

Thread.start приема блок и го изпълнява в нова нишка, като връща обект Thread, представящ течащата работа:

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

Блокът се изпълнява паралелно с кода, който следва. Основната програма не го изчаква автоматично — тя продължава веднага, а нишката си върши работата във фонов режим.

Една дребна, но важна подробност: аргументът трябва да е блок код. Празната двойка фигурни скоби { } е празен хеш, а не празен блок, така че на нишката винаги ѝ трябва тяло, което наистина прави нещо:

my $t = Thread.start({ 2 + 2 }); # добре: блок с тяло

Понеже основната програма и нишката вече вървят едновременно, не можете да разчитате на реда, в който се появява изходът им — освен ако изрично не изчакате нишката да приключи, което е темата на следващата тема.

Практика

Направете 1 тест върху съдържанието на тази тема.

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

Нишки   |   Тест — Нишки


💪 Или преминете направо към упражненията в този раздел.