use Thread::Queue;
#
# Thread::Queue is already shared (in fact,
# its just a shared array)
#
our $queue = Thread::Queue->new;
sub thread_sub {
while ($test == 0) {
if (certain test is true)
{$test = 1;}
}
#
# Not certain of your intent here, but assuming you're
# just trying to send some data to another thread, then
# you just need to pass the data as a parameter;
# Note that doing so will return immediately wo/
# any ack. from the recv'r. Also note that
# if $action is a ref to something, then that
# something must also be threads::shared
#
# {my $action = $queue->enqueue;}
$queue->enqueue($action);
}
sub thread_sub1 {
#
# this is fine.
#
$action = $queue->dequeue; #??? totally lost here
print "I am going to do your bidding master now that the test is
+ true\n";
}
Blatant plug:
If you need full duplex communications between threads, you might
peek at Thread::Queue::Duplex or Thread::Queue::Multiplex.
Perl Contrarian & SQL fanboy
|