Fix bad assumptions in test case.
[p5sagit/p5-mst-13.2.git] / ext / threads / shared / queue.pm
CommitLineData
6d1f61ba 1
2package threads::shared::queue;
3
4use threads::shared;
5use strict;
6
7sub new {
8 my $class = shift;
9 my @q : shared = @_;
10 my $q = \@q;
11 return bless $q, $class;
12}
13
14sub dequeue {
15 my $q = shift;
16 lock(@$q);
17 until(@$q) {
18 cond_wait(@$q);
19 }
20 return shift @$q;
21}
22
23sub dequeue_nb {
24 my $q = shift;
25 lock(@$q);
26 if (@$q) {
27 return shift @$q;
28 } else {
29 return undef;
30 }
31}
32
33sub enqueue {
34 my $q = shift;
35 lock(@$q);
36 push(@$q, @_) and cond_broadcast @$q;
37}
38
39sub pending {
40 my $q = shift;
41 lock(@$q);
42 return scalar(@$q);
43}
44
451;
46