Perl多线程学习指导

本文向大家简单介绍一下Perl语言中的Perl多线程的概念,Perl多线程的实现一般有两种办法,而老版本的办法实际上是一种多进程的办法。

创新互联是一家业务范围包括IDC托管业务,网页空间、主机租用、主机托管,四川、重庆、广东电信服务器租用,西部信息服务器托管,成都网通服务器托管,成都服务器租用,业务范围遍及中国大陆、港澳台以及欧美等多个国家及地区的互联网数据服务公司。

Perl语言的Perl多线程

Perl多线程的实现一般有两种办法,而老版本的办法实际上是一种多进程的办法。

一、Thread->New

该办法是传统的老办法,它与folk很类似,新建一个进程时,会把当前内存空间的所有变量都复制一份传到新的进程里面。已实现共享数据。而随着技术的发展,本文不针对该方法做深入研究。

二、IThread

这种方法是通过新建一个新的perlinterpreter。默认情况下,所有的数据和变量是不被线程共享的。如果想共享一个变量,需通过threads::shared来实现。在使用此方法的时候,需要注意以下三点:

◆变量默认是不在线程中共享的。
◆通过"usethreads"引用命名空间,不能通过eval,do,或者require。
◆如果有变量需要共享,必须引用"threads::shared"。并在定义变量的时候如下:
my$var1:shared="value";

以下是一个简单的使用Perl多线程的例子。

很多时候使用Perl多线程可以达到很不错的效果,可以节约很多时间完成很复杂的工作。但通过perlthreads模块的描述文件可以看到,它也有很多缺点。比如说在使用Perl多线程的时候,必须的保证所有引用的模块都是支持thread。而在实际应用中,我们很难做到这样。比如我们要Perl多线程,但同时要应用OLE模块去操作activex。此用例应该是一种很常见的用例。那是不是意味着此时我们不得不放弃使用Perl多线程呢。非也,本文介绍一种可以使用Perl多线程和ole的例子。

在http://www.cpan.org/官方网站上对这种情况给出的方案是:

 
 
 
  1. Ifthemodulewillonlybeusedinsideathread,  
  2. youcantryloadingthemodulefrominsidethethreadentrypointfunctionusingrequire(andimportifneeded):  
  3. subthr_func{requireUnsafe::Module#Unsafe::Module->import(...);  
  4. ....}Ifthemoduleisneededinsidethemainthread,  
  5. trymodifyingyourapplicationsothatthemoduleisloaded(againusingrequireand->import())afteranythreadsarestarted,  
  6. andinsuchawaythatnootherthreadsarestartedafterwards。  

再次,主要讨论一下第二种情况,既主要是该非thread模块放到方法中引用。

【编辑推荐】

  1. Perl多线程的两种实现方式
  2. Perl模式匹配参数使用详解
  3. 实例解析Perl多进程技术的应用
  4. 学习笔记 Perl split函数用法指导
  5. Perl多进程及其和多线程的关系解析

网站题目:Perl多线程学习指导
转载来源:http://www.hantingmc.com/qtweb/news5/491555.html

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

广告

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