У меня есть процесс, в котором я хочу, чтобы основной поток проходил через цикл и создавал n детей, каждый из которых должен спать в течение j секунд, а затем (более или менее) одновременно просыпаться и выполнять свое дело.
Мой код выглядит следующим образом [Отредактировано согласно запросу Dre]:
#THE IDEA HERE IS SOMETIMES I WANT TO HOLD THE
SMS DELIVERY FOR $smsDelay number of seconds
if($smsDelay){
my $forkPid = fork();
if($forkPid){
next;
}
elsif($forkPid == 0){
#db connection disappears while children wait, so, need to reconnect (probably not the best way to handle THIS either! :)
$myDbC = DBI->connect([DBLOGIN STUFF]) or myDie("can not connect to db");
&logData("WAITING $smsDelay SECONDS TO SEND SMS");
sleep($smsDelay * 1);
$t = time();
print "sending SMS";
&send_sms_message($userPN, $smsText , $smsCampaignId);
print "SMS sent";
my $smsVerification = &getDeliveryStatus($userPN, '.smslog');
&logData("SMS delivery for $userPN, filename:$filename. Status = $smsVerification");
#save mms, sms, response code in db
&runSQL([SQL HERE]);
exit; #this should only exit the fork, not the entire process!
}
}else{
#HERE I WOULD SEND SMS IMMEDIATELY WITHOUT DELAY
}
То, что я вижу, - это то, что каждый ребенок исполняется подряд, но каждый из них ждет j секунд ВНУТРИ следующего! Это не то, что мне нужно (и, откровенно говоря, совершенно сбивает с толку). Что я делаю не так?
ТИА