这几天看了下perl的事件编程框架anyevent,重点参考了一下几篇文章:
http://search.cpan.org/~mlehmann/anyevent-7.05/lib/anyevent.pm
http://search.cpan.org/~mlehmann/anyevent-7.05/lib/anyevent/intro.pod
1、什么是事件编程?
举个简单的例子,你浏览网页的时候,你点击一个图片,蹭的弹出一个东西,你不点,那就在那里,等待一个人来点它。如果你写过js,其实就是,你注册了很多的时间比如click,dbclick,keybord,submit等,那么浏览器就起到帮我们去监听这些事件的发生(loop)。当有对应的事件发生的时候,我们也一般也设置了callback,比如onclick,onsubmit等,去响应这些事件,这基本就是事件编程的一个缩影了。
2、perl anyevent中的watcher
在anyevent中有5中watcher,分别是io,timer,signal, child, idle.
2.1 io watcher
timer watcher
anyevent 的timer的一部分其实像javascript的setinterval :
signal watcher
前面我们在的文章中写到了perl中对于信号的处理 《》,这里主要是anyevent中对于这些事件的处理。
child watcher
idle watcher
就是如果main loop在空闲的时候做些什么呢?
发表评论