Threads不用說肯定是最經(jīng)典的多線程管理六敬,但是如果你有以下需求:
我就想設(shè)置一個(gè)數(shù)锌蓄,比如8,之后我大循環(huán)每次開始8個(gè)線程同時(shí)工作涯雅,哪個(gè)跑完了再補(bǔ)一個(gè)鲜结,保持有最大8個(gè)線程工作
這樣的話,最簡單的方法就是:Parallel::ForkManager包
cpan安裝好或者直接拷貝到文件夾下,之后4行代碼:
use Parallel::ForkManager;
my $maxThreads=8;
my $ps=Parallel::ForkManager->new($maxThreads);
for my $i(0..100){
my $pid = $ps->start and next;
#這里是你需要多線程運(yùn)行的代碼=-=精刷;
#比如:
print "$i\n";
sleep(rand(3));
$ps->finish;
}
$ps->wait_all_children;
就是這么簡單拗胜,其他細(xì)節(jié)可以看這個(gè)包的文檔。
效率沒測試過怒允,但是感覺埂软,和那些成熟的包應(yīng)該還是沒法比。