This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix makefile to put queue.pm correctly, update test script.
[perl5.git] / ext / threads / shared / t / queue.t
index 1b255b7..f09a5b9 100644 (file)
@@ -1,20 +1,24 @@
 
 
 BEGIN {
-#    chdir 't' if -d 't';
-#    push @INC ,'../lib';
-#    require Config; import Config;
-#    unless ($Config{'useithreads'}) {
+    chdir 't' if -d 't';
+    push @INC ,'../lib';
+    require Config; import Config;
+    unless ($Config{'useithreads'}) {
         print "1..0 # Skip: might still hang\n";
         exit 0;
-#    }
+    }
 }
 
 
 use threads;
-use threads::queue;
+use threads::shared::queue;
 
 $q = new threads::shared::queue;
+$|++;
+print "1..26\n";
+
+my $test : shared = 1;
 
 sub reader {
     my $tid = threads->self->tid;
@@ -23,8 +27,9 @@ sub reader {
        $i++;
 #      print "reader (tid $tid): waiting for element $i...\n";
        my $el = $q->dequeue;
+       print "ok $test\n"; $test++;
 #      print "reader (tid $tid): dequeued element $i: value $el\n";
-       select(undef, undef, undef, rand(2));
+       select(undef, undef, undef, rand(1));
        if ($el == -1) {
            # end marker
 #          print "reader (tid $tid) returning\n";
@@ -33,16 +38,16 @@ sub reader {
     }
 }
 
-my $nthreads = 1;
+my $nthreads = 5;
 my @threads;
 
 for (my $i = 0; $i < $nthreads; $i++) {
     push @threads, threads->new(\&reader, $i);
 }
 
-for (my $i = 1; $i <= 10; $i++) {
+for (my $i = 1; $i <= 20; $i++) {
     my $el = int(rand(100));
-    select(undef, undef, undef, rand(2));
+    select(undef, undef, undef, rand(1));
 #    print "writer: enqueuing value $el\n";
     $q->enqueue($el);
 }
@@ -50,10 +55,9 @@ for (my $i = 1; $i <= 10; $i++) {
 $q->enqueue((-1) x $nthreads); # one end marker for each thread
 
 for(@threads) {
-       print "waiting for join\n";
+#      print "waiting for join\n";
        $_->join();
-       
 }
-
+print "ok $test\n";