This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
instead of unions use double cast for data pointer <-> function pointer
[perl5.git] / ext / Thread / list.tx
CommitLineData
0fcb073c
JH
1BEGIN {
2 eval { require Config; import Config };
3 if ($@) {
4 print "1..0 # Skip: no Config\n";
5 exit(0);
6 }
0fcb073c
JH
7}
8
0a00ffdb
MB
9use Thread qw(async);
10use Thread::Semaphore;
11
12my $sem = Thread::Semaphore->new(0);
13
14$nthreads = 4;
15
16for (my $i = 0; $i < $nthreads; $i++) {
17 async {
18 my $tid = Thread->self->tid;
19 print "thread $tid started...\n";
20 $sem->down;
21 print "thread $tid finishing\n";
22 };
23}
24
25print "main: started $nthreads threads\n";
26sleep 2;
27
28my @list = Thread->list;
29printf "main: Thread->list returned %d threads\n", scalar(@list);
30
31foreach my $t (@list) {
32 print "inspecting thread $t...\n";
33 print "...deref is $$t\n";
34 print "...flags = ", $t->flags, "\n";
35 print "...tid = ", $t->tid, "\n";
36}
37print "main thread telling workers to finish off...\n";
38$sem->up($nthreads);