#!/usr/bin/perl

use threads;
use threads::shared;

use Time::HiRes qw(usleep);

my $var = { 'test' => 5 };
share($var);
my $cpy = shared_clone($var);

my $thr = threads->new(\&testme,$cpy);
$thr->detach();
sleep(1);

print "RESULT = ".$var->{test}."\n";

exit 1;

sub testme {
  my ($par) = @_;
  $par->{test}=12
}

my $cnt:shared = 0;
    
my $thr1 = threads->new(\&thrsub, "test1");
my $thr2 = threads->new(\&thrsub, "test2");
sub thrsub {
   my ($message) = @_;
   for (my $i=1;$i<=10;$i++) {
     if ($message =~ /([0-9])/) { $cnt+=$1 }
     usleep(100000 * int rand(10));
     print "thread $message\n";
   }
}
$thr1->detach();
print "T1 running\n";
$thr2->detach();
print "T2 running\n";

for (my $r=1;($r<12) && ($cnt<30);$r++) {
  sleep(1);
  print "Cnt = $cnt\n"
}

