我不参与接近 OS 的编程技术,但据我所知,当涉及到在 Perl 中并行执行某些事情时,选择的武器是fork
并且可能构建在它之上的一些有用的模块。文档页面fork
说:
Does a fork(2) system call to create a new process running the same program at the same point.
因此,拥有一个消耗大量内存的大型应用程序并调用fork
一个小任务意味着将有 2 个大的 perl 进程,而第二个将浪费资源只是为了做一些简单的工作。
所以,问题是:要做什么(或如何使用fork
,如果它是唯一的方法)以使代码的分离部分独立运行并仅消耗它需要的资源?
只是一个非常简单的例子:
use strict;
use warnings;
my @big_array = ( 1 .. 2000000 ); # at least 80 MB memory
sleep 10; # to have time to inspect easely the memory usage
fork();
sleep 10; # to have time to inspect easely the memory usage
子进程也消耗 80+ MB。
需要明确的是:与这个分离的代码进行通信或以某种方式使用它的结果并不重要,只是可以说“嘿,在后台为我运行这个简单的任务,让我同时继续我的繁重工作......并且不要浪费我的资源! ”运行繁重的 perl 应用程序时。