考虑我有大约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