Un thread est un moyen efficace pour lancer une fonction de façon asynchrone. Il est possible de lancer ainsi plusieurs fonctions, de les laisser travailler puis de revenir chercher les résultats par la suite avec join() comme le montre l'exemple suivant :
use threads;
use Perl6::Say;
sub iter
{
my $number = shift;
$number++;
return $number;
}
my @tab;
for(my $i = 0; $i < 40; $i++)
{
$tab[$i] = threads -> create(\&iter,$i);
}
for(my $i = 0; $i < 40; $i++)
{
say $tab[$i] -> join();
}
Ce programme va lancer 40 threads, à chacun d'entre eux il demande simplement d'ajouter un a l'entier passé en argument. Ensuite, il va récupérer les valeurs retournées par chaque thread.
Il faut noter que l'appel a join() est bloquant, c'est à dire qu'il attend que le thread lui retourne un résultat.