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"; }