位置: 编程技术 - 正文

perl AnyEvent简单介绍和入门知识(perl $?)

编辑:rootadmin

推荐整理分享perl AnyEvent简单介绍和入门知识(perl $?),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:perl -ne,perl strict,perl -ne,perl state,perl -ne,perl -ne,perl用法,perl strict,内容如对您有帮助,希望把文章链接给更多的朋友!

什么是面向事件的编程(事件驱动的编程):

编程中所有的程序是由事件决定 ? 可以是由用户操作(键盘,鼠标),也可以是由其他程序和流的到达或者操作系统事件(如网络数据包到达)来触发执行.

面向事件编程可以也被定义为,写一个计算机程序,在其中的代码(通常程序的功能的头部)被明确分配应用程序的主回路,其代码本身由两部分组成方法:事件和事件处理的代码。

面向事件的编程通常被应用在三种情况下:

1.创建用户界面的控制(包括图形)2.创建一个基于服务器的应用程序3.游戏编程时多个对象的管理

我们系统管理时,这种应用在服务器的应用程序中使用面向事件的编程很多,比如用于服务器应用解决,个并发连接(所谓 Ck 问题)

AnyEvent 是一个性能非常好的基于事件驱动的程序,有人使用它来解决 Ck 的问题,象平时我们写的程序,都是基于过程.我们都是先做完事件1-> 然后做事件2->然后做事件3 .这种方式.

但基于事件就完全不一样了,在主流程中你基本只有一个主体框架,程序的动作触发都是由事件来驱动.比如我们使用的窗口程序.点最大化最小化,都是基于事件,当接收到了最大化的事件做最大化事件那部分的程序开始运行.不在从头到尾部来执行.所以我们读基于事件的程序,最好是画成思维导图来帮助我们理解.

基于事件的程序常用到的最大好处是用来做异步,例如,我们要下载 个文件,下载完后对这些文件进行处理.可能给每个下载和处理的过程写成事件,这些事件可以同步运行(关键在于网络连接和进行文件的读写 IO 时要等待,事件是给这些等待复用起来).不知大家了解 Perl 中的 select 这个功能不,就是等到句柄可以读或者写的时候,做不同的读或者写的操作.事件循环也是一样.

在整个 AnyEvent 入门中,我们只要关注二个点就行, WATCHERS(监控者) 和 条件变量.

WATCHERS(监控者)

在 select 中,有个角色叫"监控者",就是 select 函数本身.在 AnyEvent 中不但可以监控 IO 还可以监控别的一些事件.来做不同的处理.我们可以看成这是不断的盯着某件事情的人有如下几个基本的内置的可以用来盯着的事情("监控者").TIMER : 监控时间,到了一定的条件,然后对不同的时间做不同的事件I/O: 这个是监控到 IO 是否可以读写,然后做相应的事件IDLE: 空闲时做什么事件SIGNAL : 监控观查到不同的信息,调用相应的事件CHILD PROCESS: 对子程序的状态来调用相应的处理事件

TIMER WATCHERS

基本语法

使用实例:

下面的例子是,5 秒后,每 2 秒进行一次 callback 中的事件,直到 $w 这个注册的事件被 undef 为止(也就是 $count > 次).这个中的 undef $w 是取消掉这种 watcher 的方法.

I/O WATCHERS

基本语法

使用实例:

perl AnyEvent简单介绍和入门知识(perl $?)

下面的例子,是使用 io 监控到可以读,就调用 cb 的函数,直接读文件 test.txt,每次一个字节,直到读完这个文件就通过 undef 消掉这个事件.

IDLE WATCHERS

基本语法

使用实例:

下面的例子,当整个程序中,没有其它事件在运行时,就会运行 idle .它就是当其它事件都在等待和空着的时候,所调用的.

SIGNAL WATCHERS

基本语法如下,就是当接收到 POSIX signal 的时候,运行 callback 中的事件.

CHILD PROCRSS WATCHERS

基本语法如下

条件变量(多个条件时)

这个是 AnyEvent 学习上面几种事件监控后必须要了解的.大家都见到上面有 AnyEvent->condvar; 和 $cv->recv这二个,condvar 是 condition variable 的简写.是指当什么样的条件成立时的变量

其实就是条件,当达到什么条件时退出事件循环.所以 AnyEvent 中没有传统事件中的 loop 函数.所以使用条件变量就相当于让事件这个转起来.

基本的 $cv->recv 是和 $cv->send 成对出现的,当事件调用 send 时,就一定要有 recv 收到这个调用,才会退出事件.

下面的 $cv->begin 和 $cv->end 也基本是这个意思.send 是单个条件.begin 和 end 是多个条件成立时退出,换个语来讲,就是这些事件都成对的完成后,才退出事件.

默认的 condvar 会对事件建一个条件为假的变量,所以直接有 send 和 begin send 之类才会变成真,然后退出事件循环.可以给这个地方看成一个信号量来理解就好了.y如果条件不成立,在 AnyEvent 中事件会一直 loop .所以上面的例子中没有 send .

有关 AnyEvent 其它,大家入门后可以玩玩象 AnyEvent::HTTP,twiggy 之类.看看这些应用和项目.

另外,在 AnyEvent 中我们常常使用 EV .他是一个 C 的 libev 的 Perl 接口,有非常高的性能.看完上面,在看看下面 EV 的使用,非常容易吧,基本不变.只是没出现条件变量,使用的传统的 EV::loop; 来使这个运行起来.

注:本文中大部分内容来自日本的@lestrrat

Perl AnyEvent中的watcher实例 这几天看了下perl的事件编程框架AnyEvent,重点参考了一下几篇文章:

perl 采集入库脚本分享 #!/usr/bin/perl-wuseDBI;usePOSIXqw(strftime);my$dbh=DBI-connect(DBI:mysql:shencan:.1..:″,shencan,shencan);#my$sql=select*fromshencan.LVS;#my$sth=$dbh-prepare($sql);#$sth-execute();my$HOS

perl中使用ip网站查询ip归属地脚本分享 这是去年年前写的一个perl脚本哎年后都没看过perl了。#!/usr/bin/perluseLWP::Simple;open(FILE,file);while(FILE){s/^IP1.*//g;my@file=split(/,|s+/,$_);my@file1=$file[0]$file[1];my$IP=

标签: perl $?

本文链接地址:https://www.jiuchutong.com/biancheng/372414.html 转载请保留说明!

上一篇:Perl信号处理学习简单小结(信号处理函数 strdup)

下一篇:Perl AnyEvent中的watcher实例(perl and)

  • 其他权益工具投资科目编码
  • 一个工程中可以有多个主函数
  • 固定资产清理应该在年报中怎么填写
  • 捐赠支出增值税
  • 增值税发票记账联和抵扣联都丢了怎么办
  • 财税咨询
  • 个体经营所得税核定征收2023标准
  • 营业执照丢失公示几天才能注销
  • 生产设备保险费会计分录
  • 自来水厂的供水管是什么材质的
  • 固定资产一次性扣除政策文件
  • 等额本息还款的特点
  • 微信公众号认证费用
  • 电子承兑超期一天怎么兑付
  • 报损失怎么报
  • 非居民企业所得税计算公式
  • 出租厂房的摊销额会计分录
  • 企业支付的产品广告费应计入什么账户借方
  • 一般纳税人在国家电子税务局里面如何添加银行账户
  • 滞留票的原因是什么?
  • 印花税计提会计分录
  • 机票上的exemptcny这个是什么意思?
  • 三联专用发票每一联分别给谁
  • 控股合并吸收合并新设合并图示
  • 计提水电费是什么凭证
  • 签发空头支票的赔偿金
  • mac怎么开机
  • xp系统为什么电脑不能用
  • PHP has encountered an Access Violation
  • 帮忙介绍业务
  • 交易性金融资产是什么意思
  • 公司为什么每年都要招人
  • 广告公司发生的广告代工费账务怎么处理
  • PHP:stream_context_set_option()的用法_Stream函数
  • 会计分录编制的步骤
  • win7安装包下载
  • PHP:pcntl_fork()的用法_PCNTL函数
  • PHP:mcrypt_enc_get_block_size()的用法_Mcrypt函数
  • 捐赠支出如何做账
  • php提取字符串中某个字符
  • 差旅费车票抵扣的相关规定
  • 实收资本增加印花税申报流程
  • Vue 3 介绍
  • https是如何保证安全的
  • 房屋发票备注栏怎么填
  • db2之间的数据库迁移
  • Pythonround函数作用
  • 在建工程转入固定资产怎么做
  • 长期股权投资处置损失计入什么科目
  • 企业所得税的征税对象和纳税人分别负有的纳税义务
  • 个人所得税红利所得税率
  • 取得股息红利所得 个人所得税
  • 本月还未抄报,请抄报完成之后再申报
  • 民间非营利政府是指什么
  • 物业费没收到可以确认收入吗
  • 财务规定保险柜存放现金最多不超过多少
  • 预付账款的账务处理过程
  • 进出口总额用什么字母表示
  • 其他综合收益影响利润总额吗为什么
  • 计入当期损益是不是计入三大期间费用
  • sqlserver字符函数
  • mysql8.0远程连接
  • vultr vps搭建
  • 远程桌面连接 server 2016
  • 如何远程登录路由器
  • win10 oem key
  • win1020h2正式版
  • win81和win10
  • jquery教程w3c
  • AndroidSharedpreference数据共享
  • linux使用文本编辑器
  • android刷新activity
  • 编程 delphi
  • 党建联建是什么部门负责
  • 天府新区劳动局投诉电话
  • 进口设备需要资质吗
  • 国税局政审审考生什么
  • 重庆税务总局重庆电子税务局
  • 襄城是现在的哪个城市
  • 云南省昆明市税收优惠政策
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设