4 require Config; import Config;
5 unless ($Config{'useithreads'}) {
6 print "1..0 # Skip: no useithreads\n";
13 my ($id, $ok, $name) = @_;
15 # You have to do it this way or VMS will get confused.
16 print $ok ? "ok $id - $name\n" : "not ok $id - $name\n";
18 printf "# Failed test at line %d\n", (caller)[2] unless $ok;
23 use ExtUtils::testlib;
25 BEGIN { print "1..11\n" };
36 ok(2, $av[0] eq "hi");
38 ok(3, $av[1] eq 'foo');
39 my $av = threads->create(sub {
45 push @$av, "bar", \@av;
48 ok(4,$av->[0] eq "bar");
49 ok(5,$av->[1]->[0] eq 'hi');
50 threads->create(sub { $av[0] = "hihi" })->join();
51 ok(6,$av->[1]->[0] eq 'hihi');
52 ok(7, pop(@{$av->[1]}) eq "foo");
53 ok(8, scalar(@{$av->[1]}) == 1);
54 threads->create(sub { @$av = () })->join();
55 threads->create(sub { ok(9, scalar @$av == 0)})->join();
56 threads->create(sub { unshift(@$av, threads->create(sub { my @array; share(@array); return \@array})->join())})->join();
57 ok(10, ref($av->[0]) eq 'ARRAY');
58 threads->create(sub { push @{$av->[0]}, \@av })->join();
59 threads->create(sub { $av[0] = 'testtest'})->join();
60 threads->create(sub { ok(11, $av->[0]->[0]->[0] eq 'testtest')})->join();