my $thread = async( sub{ print "@_"; }, 123, 'fred', {'a'..'f'}, [ 0..9 ] )->join;;
123 fred HASH(0x3ea93f8) ARRAY(0x3ea9470)
####
my $jobNo :shared = 0;
...
sub job {
sleep 1 until do{ lock $jobNo; $jobNo; };
... use $jobNo.
...
}
...
my $thread = threads::create( \&job );
...
{ lock $jobNo; $jobNo = getJobNo(); }
##
##
my %jobNos :shared;
...
sub job {
my $tid = threads->tid;
my $jobNo;
sleep 1 until do{ lock %jobNos; $jobNo = $jobNos{ $tid } };
## now use $jobNo.
...
}
my $thread = threads->create( \&job );
... some time later
{ lock %jobNos; $jobNos{ $thread->tid } = getJobNo() };
...