考慮我有大約100個子程序,我必須使用線程運行。
如何限制所有線程,以便一次只能運行10個線程?你可以給我一個示例代碼。
下面是示例代碼,我需要實現它限制一次運行的線程號
use threads;
my ($thr1) = threads->create(\&sub1,$parameter);
my ($thr2) = threads->create(\&sub2,$parameter);
...
my ($thr100) = threads->create(\&sub100,$parameter);
my $result;
for my $t(@threads){
#print "$t\n";
(my @getit)= $t->join();
my $tmp = join '', @getit;
$result .= $tmp;
}
print "$result\n";
或做你有這方面的任何其他方法。每個子例程將執行不同的任務。
如何[主題::池(https://metacpan.org/pod/Thread::Pool) – user1937198
可*真正辦成*並行線程的數量是由處理器的數量限制。如何限制首次創建的線程數量取決於您的架構 - 在老闆模型中,您只需生成* n *個工作人員並通過隊列分配工作。 – amon
@amon,只有在線程受CPU限制的情況下才會如此。阻塞的線程不使用CPU。 – ikegami