print "1..0\n";
exit 0;
}
+
+ # XXX known trouble with global destruction
+ $ENV{PERL_DESTRUCT_LEVEL} = 0 unless $ENV{PERL_DESTRUCT_LEVEL} > 3;
}
$| = 1;
-print "1..9\n";
+print "1..14\n";
use Thread;
print "ok 1\n";
}
$t->join;
-sub islocked
+sub dorecurse
{
- use attrs 'locked';
my $val = shift;
my $ret;
+ print $val;
if (@_)
{
- $ret = new Thread \&islocked,shift;
- sleep 2;
+ $ret = Thread->new(\&dorecurse, @_);
+ $ret->join;
}
- print $val;
}
-$t = islocked("ok 6\n","ok 7\n");
-join $t;
+$t = new Thread \&dorecurse, map { "ok $_\n" } 6..10;
+$t->join;
# test that sleep lets other thread run
-$t = new Thread \&islocked,"ok 8\n";
+$t = new Thread \&dorecurse,"ok 11\n";
sleep 6;
-print "ok 9";
-join $t;
+print "ok 12\n";
+$t->join;
+
+sub islocked
+{
+ use attrs 'locked';
+ my $val = shift;
+ my $ret;
+ print $val;
+ if (@_)
+ {
+ $ret = Thread->new(\&islocked, shift);
+ }
+ $ret;
+}
+
+$t = Thread->new(\&islocked, "ok 13\n", "ok 14\n");
+$t->join->join;
+