我在工作中开发的项目有问题。它是一个多线程应用程序。我将 Moose 用于面向对象编程,将 ONE::Timer 用于计时器。我认为我没有很好地使用它,因为我的子程序从未被调用过。基本上,这是我的代码:
sub add {
my ($self, $bot) = @_;
my $provision_object = $bot->provision->new;
$provision_object->compute;
}
我的计算方法如下所示:
sub compute {
<A couple of line code...>
ONE::Timer->at($time1, sub { <computations1> });
ONE::Timer->at($time2, sub { <computations2> });
}
time1
并time2
包含一个时间戳。由于我的脚本是一个服务器(所以它永远不会完成),我确信这些时间是在脚本结束之前达到的。time1
after和time2
seconds调用的两个子程序永远不会被调用。在该方法的文档中ONE::Timer->at
,它说:
如果你存储返回值,它就充当一个守卫——如果它被破坏,那么计时器就会被取消。
这就是为什么我不存储对方法的调用的返回值。我在这里错过了什么吗?
非常感谢任何答案;)