如何在Perl中创建线程?

jav*_*irl 1 perl multithreading

我有一个简单的Perl脚本,我有一个BIG循环,在这里我调用了或多或少百万次的函数my_fun().我想创建将处理它的线程池 - 同时最多5个线程将​​在循环中调用此方法.

使用最快的库对我来说非常重要 - 看到例子真的很棒.

我的代码看起来像这样:

for (my $i = 0; $i < 1000000 ; $i++) {
        my_fun();
}
Run Code Online (Sandbox Code Playgroud)

先感谢您

sim*_*que 11

看看Parallel :: ForkManager.它正在使用fork,而不是线程,但它应该非常简单地完成您的工作.

示例从文档中解除并略有改动:

use Parallel::ForkManager;

my $pm = Parallel::ForkManager->new(5); # number of parallel processes

for my $i (0 .. 999999) {
  # Forks and returns the pid for the child:
  my $pid = $pm->start and next;

  #... do some work with $data in the child process ...
  my_fun();

  $pm->finish; # Terminates the child process
}

$pm->wait_all_children;
Run Code Online (Sandbox Code Playgroud)