- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
什么是面向事件的编程(事件驱动的编程):
编程中所有的程序是由事件决定 -可以是由用户操作(键盘,鼠标),也可以是由其他程
序和流的到达或者操作系统事件(如网络数据包到达)来触发执行
面向事件编程可以也被定义为,写一个计算机程序,在其中的代码(通常程序的功能的 头部)被明确分配应用程序的主回路, 其代码本身由两部分组成方法: 事件和事件处理的代该文档为文档投稿赚钱网作品,版权所有,违责必纠
码。
面向事件的编程通常被应用在三种情况下:
1?创建用户界面的控制(包括图形)
2?创建一个基于服务器的应用程序
3?游戏编程时多个对象的管理
我们系统管理时,这种应用在服务器的应用程序中使用面向事件的编程很多 ,比如用于服
务器应用解决10,000个并发连接(所谓c10k问题)
anyevent是一个性能非常好的基于事件驱动的程序 ,有人使用它来解决 c10k的问题,该文档为文档投稿赚钱网作品,版权所有,违责必纠
象平时我们写的程序,都是基于过程?我们都是先做完事件 1->然后做事件2->然后做 事件3 ?这种方式?该文档为文档投稿赚钱网作品,版权所有,违责必纠
但基于事件就完全不一样了 ,在主流程中你基本只有一个主体框架,程序的动作触发都是 由事件来驱动?比如我们使用的窗口程序?点最大化最小化,都是基于事件,当接收到了最大化 的事件做最大化事件那部分的程序开始运行 ?不在从头到尾部来执行?所以我们读基于事件的该文档为文档投稿赚钱网作品,版权所有,违责必纠
程序,最好是画成思维导图来帮助我们理解 ?
基于事件的程序常用到的最大好处是用来做异步 ,例如,我们要下载100个文件,下载完该文档为文档投稿赚钱网作品,版权所有,违责必纠
后对这些文件进行处理?可能给每个下载和处理的过程写成事件 ,这些事件可以同步运行(关该文档为文档投稿赚钱网作品,版权所有,违责必纠
键在于网络连接和进行文件的读写 io时要等待,事件是给这些等待复用起来 )?
不知大家了解 perl中的select这个功能不,就是等到句柄可以读或者写的时候 ,做不该文档为文档投稿赚钱网作品,版权所有,违责必纠
同的读或者写的操作?事件循环也是一样?
在整个anyevent入门中,我们只要关注二个点就行,watchers(监控者)和 条件变量?该文档为文档投稿赚钱网作品,版权所有,违责必纠
watchers(监控者)
在select中,有个角色叫监控者,就是select函数本身?
在anyevent中不但可以监控 io还可以监控别的一些事件 .来做不同的处理.我们可以该文档为文档投稿赚钱网作品,版权所有,违责必纠
看成这是不断的盯着某件事情的人
有如下几个基本的内置的可以用来盯着的事情 (监控者)?
timer :监控时间,到了一定的条件,然后对不同的时间做不同的事件
i/o :这个是监控到io是否可以读写,然后做相应的事件
idle :空闲时做什么事件
signal :监控观查到不同的信息,调用相应的事件
child process:对子程序的状态来调用相应的处理事件
timer watchers
基本语法
代码如下:
anyevent->timer(
after => $seconds,#多久之后做相应的操作 ?
interval => $seconds,# 在上面条件生效后,每格多久进行一次 callback.该文档为文档投稿赚钱网作品,版权所有,违责必纠
cb => $cb,# cb是callback的简写,所以知道了吧,只要到了前面的条件,就会运行 cb该文档为文档投稿赚钱网作品,版权所有,违责必纠
=>指向的函数.
);
使用实例:
下面的例子是,5秒后,每2秒进行一次 callback中的事件,直到$w这个注册的事件 被undef为止(也就是 $count > 10次).这个中的 undef $w 是取消掉这种 watcher的方 法.该文档为文档投稿赚钱网作品,版权所有,违责必纠
代码如下:
#!/usr/bi n/perl
use strict;
use an yeve nt;
my $cv = an yeve nt->c on dvar;
my $co unt = 0;
my $w; $w = anyevent-& gt;timer(
after =& gt; 5,
in terval =& gt; 2,
cb =& gt; sub {
$co un t++;
warn这是第 $count次调用;
if ($cou nt >= 10) {
un def $w;
}
}
);
$cv- >recv;
i/o watchers
基本语法
代码如下:
my $fh = ....; #打开一个句柄
my
文档评论(0)