在尝试理解AnyEvent的过程中,我创建了两个定时器,每次定时器都会被触发屏幕.最初都没有工作.但是按照Joshua Barratt的计时器示例,我发现如果我没有undef
计时器的观察者变量,那么计时器的回调根本不会发射.为什么会这样?我怀疑它与范围在perl和/或AnyEvent中的工作方式有关.
这是我的示例程序:
#!/usr/bin/perl
use AE;
my $cv = AE::cv;
sub func1 {
my $spoke = 0;
my $t1; $t1 = AE::timer 0, 1,
sub {
print "Timer 1 Fired\n";
if($spoke++ > 5) {
print "Timer 1 Done\n";
undef $t1;
}
};
print "Timer 1 started\n";
}
sub func2 {
my $spoke = 0;
my $t2; $t2 = AE::timer 0, 1,
sub {
print "Timer 2 Fired\n";
if($spoke++ > 5) {
print "Timer 2 Done\n";
#undef …
Run Code Online (Sandbox Code Playgroud)