0
我無法得到想要的結果。我想在單獨的線程中執行子例程my_fun。但是$ meterId不會改變。例如,如果我執行3線程,那麼$ meterId是同樣喜歡OSE123,OSE123,OSE123通過並行執行一個子程序:: ForkManager
use Parallel::ForkManager;
my $max_procs = 3;
my $pm = Parallel::ForkManager->new($max_procs);
NAMES:for (my $i= 0 ;$i <=$ENV{'NO_OF_CUSTOMER'};$i++)
{
my $pid = $pm->start() and next NAMES;
my_fun();
$pm->finish(); # pass an exit code to finish
}
sub my_fun()
{
$meterId='OSE-'.int (rand(10000000));
lock($meterId);
chomp (my $timeCheck=`date +%H`);
my $cmdOut= $testCaseObj->preprovisionAccount ("CUS_P_EUR_STD","ACCEUR_STD", "$meterId", "P_EUR_STD", "GEN" , "EUR","DPL");
my ($topLAcc,$subId,$cusId) = $testCaseObj->getAccountDetails($cmdOut);
$testCaseObj->updateLogTable("$cusId","$topLAcc","$subId","$meterId");
}
$pm->wait_all_children;
['lock'(http://perldoc.perl.org/functions/lock.html)_...如果你不是下::共享這確實nothing._ – 2014-12-04 06:24:55
而且使用線程, P :: FM創建進程,而不是線程。 – ikegami 2014-12-04 14:32:03