perl-多线程

[b][size=large][align=center]perl-多线程[/align][/size][/b]

1.创建多线程

Thread->new(\&start_thread,$mho);
&start_thread是子函数,用来运行线程所执行的内容。
$mho传递给子函数的参数。

2.实例


#!/perl

use strict;
use Thread;
#use threads::shared;

my @threads;
my $mhofile = @ARGV[0];
open(MHO,"$mhofile");
my @mholist=<MHO>;
#print "@mholist\n";

foreach my $mho (@mholist) {
next unless defined $mho;
print "start one thread :\n";
$threads[my $tempcount]=Thread->new(\&start_thread,$mho);
$tempcount++;
}
foreach my $thread (@threads) {
$thread->join();
}

sub start_thread{
my ($infomho)=@_;
print "in thread $infomho";
sleep 20;
}


这里建立了多个线程:$threads[my $tempcount]=Thread->new(\&start_thread,$mho);

启动了多干个线程后,我们这里一定要使用变量保存thread的id。因为,创建一个thread以后要用join取得该thread的返回值,然后系统才会对thread进行清理,否则所有thread的信息都会保留下来,当然越积越多了。

所以,在最后我们要等待这些线程的完全退出:
foreach my $thread (@threads) {
$thread->join();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值