本文和大家重点讨论一下Perl线程的概念,Perl线程是一个单一的执行流程,它是所有程序执行过程中最小的控制单位,即能被CPU所调度的最小任务单元。下面请看本文有关Perl线程概念详细介绍。
肇州ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
Perl线程学习指南
1:创建Perl线程
usethreads;my$thr=threads->new(\&sub1);subsub1{print"Inthethreads";}
也可以通过creat创建Perl线程并为Perl线程传递参数
new=create
my$thr=threads->create(\sub1,@paramlist);
2:等待Perl线程结束
usethreads;my($thr)=threads->new(\sub1);my@return=$thr->join();subsub1{return('FiFty',1,2);}
注意在这个例子中,sub1返回的是一个list,所以我们需要在定义Perl线程时候使用my($thr),这是给$thr一个list的上下文
3:忽略一个Perl线程
join做三件事:等待Perl线程推出,清理Perl线程以及返回Perl线程返回值。
如果你对Perl线程没啥兴趣,可以使用detach不管它,Perl会自动收拾这个进程
usethreadsmy$thr=threads->create(\&sub1);$thr->detach();sleep(15);subsub1{my$a=0;while(1){$a++;print"\$ais$a\n";sleep1;}}
sleep在这里的作用是使主进程多运行一些时间,否则主程序推出则Perl线程也会退出
我们也可以在sub里面退出Perl线程
subsub1{threads->detach();}
4:数据共享
usethreads;usethreads::shared;my$foo:shared=1;my$bar=1;my$thr=threads->create(sub{$foo++;$bar++}->join();print$foo,"\n";#2print$bar,"\n";#1
使用hash作为共享数据要注意的是
my$foo:shared;my$bar;my%foo;$foo->{bar}=\$bar#错误,必须使用共享数据的引用
5:使用数据共享带来的问题
考虑这样一个程序
usethreads;usethreads::shared;my$a:shared=1;my$thr1=threads->create(\&sub1);my$thr2=threads->create(\&sub2);$thr1->join;$thr2->join;print("$a\n");subsub1{my$foo=$a;$a=$foo+1;}subsub2{my$bar=$a;$a=$bar+1;}
这时候a的值是多少呢?sub1和sub2都对变亮a进行了修改,所以a的值是不确定的,可能是2也可能是3(我试了n次都是3)
6:同步和控制
访问控制:lock()
标题名称:Perl线程学习指南
网页网址:http://www.shufengxianlan.com/qtweb/news18/534718.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联