AE 简单的快速的新的 cooler的 AnyEvent API
AE是AnyEvent + EV
use AnyEvent; # not AE
# file handle or descriptor readable
my $w = AE::io $fh, 0, sub { ... };
# one-shot or repeating timers
my $w = AE::timer $seconds, 0, sub { ... }; # once
my $w = AE::timer $seconds, $interval, sub { ... }; # repeated
print AE::now; # prints current event loop time
print AE::time; # think Time::HiRes::time or simply CORE::time.
# POSIX signal
my $w = AE::signal TERM => sub { ... };
# child process exit
my $w = AE::child $pid, sub {
my ($pid, $status) = @_;
...
};
# called when event loop idle (if applicable)
my $w = AE::idle sub { ... };
my $cv = AE::cv; # stores whether a condition was flagged
$cv->send; # wake up current and all future recv's
$cv->recv; # enters "main loop" till $condvar gets ->send
# use a condvar in callback mode:
$cv->cb (sub { $_[0]->recv });
描述:
这个模块描述新的简单的 AnyEvent API.
新的API的基本原理是经验与EV现实这个API实际工作,尽管它缺乏可扩展性,导致更短的,更容易的和更快的API。
和AnyEvent主要区别是 函数调用时用方法调用代替,没有命名的参数被使用。
这使得调用来观察创建函数真的很短, 会让一个程序变得易读尽管缺乏命名参数。
函数调用也允许更多的静态类型检查相比方法调用, 因此很多错误在编译时间被捕获
另外, 一些后端的(Perl和EV)是如此之快,方法调用的开销是非常明显的( EV它增加了执行时间5-6倍,
Perl 方法调用开销是大约两个因素)
需要注意的是AE API 是一个非传统的, 不是未来的版本, AnyEvent API.
两个API 可以交替使用,没有计划的切换
作为AE API 是互补的,不是所有的在AnyEvent API是可用的,
你仍旧需要使用AnyEvent为了更好的东西。另外,你不能直接使用AE,使用AnyEvent 会提供AE的名字空间。
目前,那些函数将会变的很慢 相比它们的方法调用 当使用AnyEvent::Strict or AnyEvent::Debug::wrap.
函数:
这个章节简单的描述了非正统的构造器和其他可用函数在AE的名字空间里。
语义在这里没有描述,请参阅说明的函数或方法中具有相同名称的任何帮助的细节。