#!/usr/bin/perl use strict; use threads; use threads::shared; use Thread::Queue; use SDBM_File; use Fcntl; # initialize some stuff my $q = Thread::Queue->new(); my %items : shared; tie %items,'SDBM_File','itemdb',O_CREAT|O_RDWR,0640 or die "Could not open SDBM file: $!\n"; $items{$_} = 1 for 1..10; # play with 3 threads for (1..3) { threads->new(\&ttest) } my @threadlist = threads->list; $q->enqueue($_) for 1..10; $q->enqueue(undef) for @threadlist; $_->join for @threadlist; # clean up mess untie %items; unlink 'itemdb.pag','itemdb.dir'; sub ttest { while (my $qthingie = $q->dequeue) { print "$items{$qthingie}\n" } }