小编Le *_*ard的帖子

为什么AnyEvent定时器观察器必须在其回调中未定义?

在尝试理解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)

perl scope timer anyevent

5
推荐指数
1
解决办法
465
查看次数

标签 统计

anyevent ×1

perl ×1

scope ×1

timer ×1