diff options
| author | Mark Murray <markm@FreeBSD.org> | 1998-09-09 07:00:04 +0000 | 
|---|---|---|
| committer | Mark Murray <markm@FreeBSD.org> | 1998-09-09 07:00:04 +0000 | 
| commit | ff6b7ba98e8d4aab04cbe2bfdffdfc9171c1812b (patch) | |
| tree | 58b20e81687d6d5931f120b50802ed21225bf440 /contrib/perl5/ext/Thread/queue.t | |
Diffstat (limited to 'contrib/perl5/ext/Thread/queue.t')
| -rw-r--r-- | contrib/perl5/ext/Thread/queue.t | 36 | 
1 files changed, 36 insertions, 0 deletions
| diff --git a/contrib/perl5/ext/Thread/queue.t b/contrib/perl5/ext/Thread/queue.t new file mode 100644 index 0000000000000..4672ba6ee74ad --- /dev/null +++ b/contrib/perl5/ext/Thread/queue.t @@ -0,0 +1,36 @@ +use Thread; +use Thread::Queue; + +$q = new Thread::Queue; + +sub reader { +    my $tid = Thread->self->tid; +    my $i = 0; +    while (1) { +	$i++; +	print "reader (tid $tid): waiting for element $i...\n"; +	my $el = $q->dequeue; +	print "reader (tid $tid): dequeued element $i: value $el\n"; +	select(undef, undef, undef, rand(2)); +	if ($el == -1) { +	    # end marker +	    print "reader (tid $tid) returning\n"; +	    return; +	} +    } +} + +my $nthreads = 3; + +for (my $i = 0; $i < $nthreads; $i++) { +    Thread->new(\&reader, $i); +} + +for (my $i = 1; $i <= 10; $i++) { +    my $el = int(rand(100)); +    select(undef, undef, undef, rand(2)); +    print "writer: enqueuing value $el\n"; +    $q->enqueue($el); +} + +$q->enqueue((-1) x $nthreads); # one end marker for each thread | 
