perlanyevent简单介绍和入门知识.docx 6页

  • 0
  • 0
  • 0
  • 约5.93千字
  • 2020-07-04 发布

perlanyevent简单介绍和入门知识.docx

文档工具:
    1. 1、本文档共6页,可阅读全部内容。
    2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
    3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
    4. 文档侵权举报电话:19940600175。
    什么是面向事件的编程(事件驱动的编程): 编程中所有的程序是由事件决定 -可以是由用户操作(键盘,鼠标),也可以是由其他程 序和流的到达或者操作系统事件(如网络数据包到达)来触发执行 面向事件编程可以也被定义为,写一个计算机程序,在其中的代码(通常程序的功能的 头部)被明确分配应用程序的主回路, 其代码本身由两部分组成方法: 事件和事件处理的代该文档为文档投稿赚钱网作品,版权所有,违责必纠 码。 面向事件的编程通常被应用在三种情况下: 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)

    • 内容提供方:107****0911
    • 审核时间:2020-07-04
    • 审核编号:7163155121002145

    相似文档