This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Integrate perl
[perl5.git] / ext / threads / shared / queue.pm
index 02a5c2c..30b6ea2 100644 (file)
@@ -68,39 +68,33 @@ L<threads>, L<threads::shared>
 sub new {
     my $class = shift;
     my @q : shared = @_;
-    my $q = \@q;
-    return bless $q, $class;
+    return bless \@q, $class;
 }
 
 sub dequeue  {
     my $q = shift;
     lock(@$q);
-    until(@$q) {
-       cond_wait(@$q);
-    }
+    cond_wait @$q until @$q;
+    cond_signal @$q if @$q > 1;
     return shift @$q;
 }
 
 sub dequeue_nb {
-  my $q = shift;
-  lock(@$q);
-  if (@$q) {
+    my $q = shift;
+    lock(@$q);
     return shift @$q;
-  } else {
-    return undef;
-  }
 }
 
 sub enqueue {
     my $q = shift;
     lock(@$q);
-    push(@$q, @_) and cond_broadcast @$q;
+    push @$q, @_  and cond_signal @$q;
 }
 
 sub pending  {
-  my $q = shift;
-  lock(@$q);
-  return scalar(@$q);
+    my $q = shift;
+    lock(@$q);
+    return scalar(@$q);
 }
 
 1;