How do I share the hash reference $ref
across main thread and worker threads ?
#!/usr/bin/perl
use strict;
use warnings;
use threads;
use threads::shared;
my $ref = {};
$ref->{0}->{abc} = 123;
$ref->{1}->{abc} = 223;
printf( "%d\n", $ref->{0}->{abc} );
printf( "%d\n", $ref->{1}->{abc} );
issue_all_jobs($ref);
while (1)
{
printf( "%d\n", $ref->{0}->{abc} );
printf( "%d\n", $ref->{1}->{abc} );
sleep(1);
}
sub issue_all_jobs
{
my ($ref) = @_;
for ( my $i = 0; $i < 2; $i++ )
{
$ref->{$i}->{handle} = new threads( \&issue_job, $ref, $i );
$ref->{$i}->{handle}->detach();
}
}
sub issue_job
{
my ( $ref, $i ) = @_;
$ref->{$i}->{abc} = 555123 + $i;
sleep(2);
}