Commit | Line | Data |
4d76a344 |
1 | #!perl -w |
2 | |
3 | # Tests if $$ and getppid return consistent values across threads |
4 | |
5 | BEGIN { |
6 | chdir 't' if -d 't'; |
7 | @INC = qw(../lib); |
88faa3e1 |
8 | require './test.pl'; |
4d76a344 |
9 | } |
10 | |
11 | use strict; |
12 | use Config; |
13 | |
14 | BEGIN { |
15 | if (!$Config{useithreads}) { |
16 | print "1..0 # Skip: no ithreads\n"; |
17 | exit; |
18 | } |
19 | if (!$Config{d_getppid}) { |
20 | print "1..0 # Skip: no getppid\n"; |
21 | exit; |
22 | } |
3fc97137 |
23 | eval 'use threads; use threads::shared'; |
24 | if ($@ =~ /dynamic loading not available/) { |
25 | print "1..0 # Skip: no dynamic loading, no threads\n"; |
26 | exit; |
27 | } |
28 | plan tests => 3; |
29 | if ($@) { |
30 | fail("unable to load thread modules"); |
31 | } |
32 | else { |
33 | pass("thread modules loaded"); |
34 | } |
4d76a344 |
35 | } |
36 | |
4d76a344 |
37 | my ($pid, $ppid) = ($$, getppid()); |
38 | my $pid2 : shared = 0; |
39 | my $ppid2 : shared = 0; |
40 | |
41 | new threads( sub { ($pid2, $ppid2) = ($$, getppid()); } ) -> join(); |
42 | |
88faa3e1 |
43 | is($pid, $pid2, 'pids'); |
44 | is($ppid, $ppid2, 'ppids'); |