async {
while( $Q->dequeue() ) {
## process message.
}
};
async {
until( $dieNow ) {
sleep $someTime;
## do housekeeping.
}
};
####
while( my( $nfound, $timeleft) = select( ..., $timeout ) ) {
if( $timeleft ) {
## Nothing doing, do some housekeeping
}
else {
## deal with the event
}
}
####
use Time::HiRes qw[ sleep ];
...
until( $dieNow ) {
sleep( $timeout / 10 );
if( my $dgram = $Q->dequeue_nb() ) {
## Act on $dgram
}
else {
## Do housekeeping (if required).
}
}
####
async{ 1 while Win32::Sleep( 100 ); }->join;;