5 if ($ENV{'PERL_CORE'}){
7 unshift @INC, '../lib';
10 if (! $Config{'useithreads'}) {
11 print("1..0 # Skip: Perl not compiled with 'useithreads'\n");
16 use ExtUtils::testlib;
22 require threads::shared;
23 import threads::shared;
25 if ($@ || ! $threads::shared::threads_shared) {
26 print("1..0 # Skip: threads::shared not available\n");
31 print("1..53\n"); ### Number of tests that will be run ###
48 # You have to do it this way or VMS will get confused.
50 print("ok $id - $name\n");
52 print("not ok $id - $name\n");
53 printf("# Failed test at line %d\n", (caller)[2]);
60 ### Start of Testing ###
62 my ($READY, $GO, $DONE) :shared = (0, 0, 0);
114 my $thr = threads->create('do_thread');
116 ok($thr->is_running(), 'thread running');
117 ok(threads->list(threads::running) == 1, 'thread running list');
118 ok(! $thr->is_detached(), 'thread not detached');
119 ok(! $thr->is_joinable(), 'thread not joinable');
120 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
121 ok(threads->list(threads::all) == 1, 'thread list');
124 ok(! $thr->is_running(), 'thread not running');
125 ok(threads->list(threads::running) == 0, 'thread running list');
126 ok(! $thr->is_detached(), 'thread not detached');
127 ok($thr->is_joinable(), 'thread joinable');
128 ok(threads->list(threads::joinable) == 1, 'thread joinable list');
129 ok(threads->list(threads::all) == 1, 'thread list');
132 ok(! $thr->is_running(), 'thread not running');
133 ok(threads->list(threads::running) == 0, 'thread running list');
134 ok(! $thr->is_detached(), 'thread not detached');
135 ok(! $thr->is_joinable(), 'thread not joinable');
136 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
137 ok(threads->list(threads::all) == 0, 'thread list');
139 $thr = threads->create('do_thread');
141 ok($thr->is_running(), 'thread running');
142 ok(threads->list(threads::running) == 0, 'thread running list');
143 ok($thr->is_detached(), 'thread detached');
144 ok(! $thr->is_joinable(), 'thread not joinable');
145 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
146 ok(threads->list(threads::all) == 0, 'thread list');
149 ok(! $thr->is_running(), 'thread not running');
150 ok(threads->list(threads::running) == 0, 'thread running list');
151 ok($thr->is_detached(), 'thread detached');
152 ok(! $thr->is_joinable(), 'thread not joinable');
153 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
155 $thr = threads->create(sub {
156 ok(! threads->is_detached(), 'thread not detached');
157 ok(threads->list(threads::running) == 1, 'thread running list');
158 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
159 ok(threads->list(threads::all) == 1, 'thread list');
162 ok(threads->is_detached(), 'thread detached');
163 ok(threads->list(threads::running) == 0, 'thread running list');
164 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
165 ok(threads->list(threads::all) == 0, 'thread list');
169 ok($thr->is_running(), 'thread running');
170 ok(threads->list(threads::running) == 0, 'thread running list');
171 ok($thr->is_detached(), 'thread detached');
172 ok(! $thr->is_joinable(), 'thread not joinable');
173 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
174 ok(threads->list(threads::all) == 0, 'thread list');
177 ok(! $thr->is_running(), 'thread not running');
178 ok(threads->list(threads::running) == 0, 'thread running list');
179 ok($thr->is_detached(), 'thread detached');
180 ok(! $thr->is_joinable(), 'thread not joinable');
181 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
183 threads->create(sub {
184 ok(! threads->is_detached(), 'thread not detached');
185 ok(threads->list(threads::running) == 1, 'thread running list');
186 ok(threads->list(threads::joinable) == 0, 'thread joinable list');
187 ok(threads->list(threads::all) == 1, 'thread list');