У меня есть многопоточный основной скрипт Perl. Я хочу, чтобы каждый поток имел три команды для запуска, как только весь поток будет завершен, я хочу, чтобы мой скрипт снова запускал тот же поток, в основном в цикле, может кто-нибудь дать мне знать, как это сделать?как запустить поток Perl для цикла
это мой Perl фрагмент кода
my @finalOneClickarray= grep(/\S/, @oneclickConcurrentbackup); #----Removing the empty content from the array---#
#---Making Concurrent OneClick backup commands using threads------#
my @threads;
#-----performing the CHO loops as given by user-------#
foreach (@finalOneClickarray) {
push @threads, threads->new(\&concurrentBackupCommandsRead, $_);
}
foreach (@threads) {
$_->join();
}
concurrentBackupCommandsRead является способ, в котором команды получают казнены.
Обновленный код Perl: -
use threads;
use threads::shared;
my @arr = (1,2,3,4);
my $outnumber :shared =4;
print "\n variable outside thread that is in main program $outnumber\n";
my @threads;
for($i=0;$i<=3; $i++)
{
print "\ncalling subrountine vinay for $i times\n";
vinay();
}
sub vinay()
{
foreach (@arr) {
push @threads, threads->create(\&doSomething);
}
foreach (@threads) {
$_->join();
}
}
sub doSomething()
{
print "\n Before increment is $outnumber\n";
my $foo = $outnumber;
$outnumber = $foo + 1;
print "\n After increment is $outnumber\n";
}
Вы пытаетесь распределить рабочую нагрузку между фиксированным числом потоков? Если это так, используйте Thread :: Queue для передачи задач рабочим. – amon
ни одна нить не выполнит sub rountine и вернется к основному скрипту perl, теперь, когда он вернулся к основному скрипту, я хочу снова запустить тот же набор команд, поэтому это должно продолжаться в цикле, поэтому хотелось спросить, как чтобы поставить вышеуказанный код в цикл, если есть какой-либо способ, пожалуйста, дайте мне знать –
@VinayD, непонятно, что вы просите. Учитывая ваш комментарий, почему вы не можете просто поставить вышеуказанный код в подпрограмму и вызывать * это * в цикле? Покажите нам, что вы пробовали, и почему/где это не работает. – pilcrow