技术分享如何创建Perl线程

本文和大家重点讨论一下Perl线程概念及创建过程,Perl线程是一个单一的执行流程,它是所有程序执行过程中最小的控制单位,即能被CPU所调度的最小任务单元。

Perl线程简介

Perl线程是一个单一的执行流程,它是所有程序执行过程中最小的控制单位,即能被CPU所调度的最小任务单元。Perl线程与进程之间既有联系,又完全不同。简单地说,一个Perl线程必然属于某一个进程,而一个进程包含至少一个或者多个Perl线程。早期的计算机系统一次只能运行一个程序,因此,当有多个程序需要执行的时候,唯一的办法就是让它们排成队,按顺序串行执行。进程的出现打破了这种格局,CPU资源按时间片被分割开来,分配给不同的进程使用。

这样一来,从微观上看进程的执行虽然仍是串行的,但是从宏观上看,不同的程序已经是在并行执行了。如果我们把同样的思想运用到进程上,很自然地就会把进程再细分成更小的执行单位,即Perl线程。由于一个进程又往往需要同时执行多个类似的任务,因此这些被细分的Perl线程之间可以共享相同的代码段,数据段和文件句柄等资源。有了进程,我们可以在一台单CPU计算机系统上同时运行Firefox和MicrosoftOfficeWord等多个程序;有了Perl线程,我们可以使Firefox在不同的标签里同时加载多个不同的页面,在OfficeWord里编辑文档的同时进行语法错误检查。因此,Perl线程给我们带来了更高的CPU利用率、更快速的程序响应、更经济地资源使用方式和对多CPU的体系结构更良好的适应性。

Perl线程的生命周期

创建Perl线程

Perl线程作为Perl中的一种实体,其一生可以粗略的分为创建,运行与退出这三个阶段。创建使得Perl线程从无到有,运行则是Perl线程完成其主要工作的阶段,退出自然就是指Perl线程的消亡。Perl线程的运行和普通函数的执行非常类似,有其入口参数,一段特定的代码流程以及执行完毕后返回的一个或一组结果,唯一与普通函数调用的不同之处就在于新建Perl线程的执行与当前Perl线程的执行是并行的。

Perl里创建一个新的Perl线程非常简单,主要有两种方法,他们分别是:

使用threads包的create()方法,例如

清单3.通过create()方法创建Perl线程
 

 
 
 
  1. usethreads;  
  2.  
  3. subsay_hello  
  4. {  
  5. printf("Hellothread!@_.\n");  
  6. return(rand(10));  
  7. }  
  8.  
  9. my$t1=threads->create(\&say_hello,"param1","param2");  
  10. my$t2=threads->create("say_hello","param3","param4");  
  11. my$t3=threads->create(  
  12. sub{  
  13. printf("Hellothread!@_\n");  
  14. return(rand(10));  
  15. },  
  16. "param5",  
  17. "param6");  
  18.  

 使用async{}块创建Perl线程,例如

清单4.通过async{}块创建Perl线程
 

 
 
 
  1. #!/usr/bin/perl  
  2. #  
  3. usethreads;  
  4.  
  5. my$t4=async{  
  6. printf("Hellothread!\n");  
  7. };  

本文题目:技术分享如何创建Perl线程
网站URL:http://www.shufengxianlan.com/qtweb/news20/414070.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联