Perl多线程

 

  1. 多线程的概念

    多线程的概念在所有操作系统的书总都有讲到,所谓多线程是这样一种机制,它允许在程序中并发执行多个指令流,每个指令流都称为一个线程,彼此间互相独立。线程又称为轻量级进程,它和进程一样拥有独立的执行控制由操作系统负责调度,区别在于线程没有独立的存储空间,而是和所属进程中的其它线程共享一个存储空间,这使得线程间的通信远较进程简单。多个线程的执行是并发的,也就是在逻辑上同时,而不管是否是物理上的同时。如果系统只有一个CPU,那么真正的同时是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。

  1. Perl的多线程

目前Perl多线程有3个模块,POE模块,Thread模块,threads模块。POE模块经过李昕前期的分析,认为不太好用,不太容易理解,有时候会出现CPU高的问题。而Thread模块由于不稳定性和windows平台下的缺陷,目前已经被threads模块替代,目前CPAN主要推荐的是threads模块。

threads模块主要涉及threads和threads::shared两个主要模块

  1. threads模块介绍

threads基于一个不同于Thread的多线程模型---解释器多线程,从Perl v5.6.0开始支持,目前我们PAT使用的版本是Perl v5.8.7。在这个模型中,每个线程运行在自己的perl解释器中,默认情况下,各个线程间不共享变量。如果需要在线程间共享变量需要明确指出(采用threads::shared)。注意,这和我们平常理解的多线程模型有所不同,编码时要特别注意这一点。

下面介绍下threads多线程的一些关键内容:

  1.   采用create或者new方法来创建线程

Use threads;

$thr = threads->new(\&sub1, "Param 1", "Param 2");

Sub sub1 {

     My @para = @_;

     Print “Get parameters:”,join(“,”,@para),”\

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值