我怎样才能使计时器“可见”呢?此示例返回(与睡眠时间始终无关) 2 (我期望的值与睡眠时间类似)。
#!/usr/local/bin/perl
use warnings;
use 5.014;
use AnyEvent;
my $c = 0;
my $cv = AnyEvent->condvar;
my $once_per_second = AnyEvent->timer (
after => 0,
interval => 1,
cb => sub {
$c++;
$cv->send;
},
);
sleep 5;
$cv->recv;
say $c;发布于 2011-07-28 15:18:04
至少有两个问题:
sleep 5不会运行事件循环。sleep 5语句,则$c将仅为1。这是你想要的吗?
my $c = 0;
my $cv = AnyEvent->condvar;
my $once_per_second = AnyEvent->timer(after => 0, interval => 1, cb => sub { $c++ });
my $five_seconds = AnyEvent->timer(after => 5, cb => sub { $cv->send });
$cv->recv;
say $c;发布于 2012-09-05 00:01:50
当sleep处于“活动”状态时,事件循环没有运行(好吧,什么也没有运行)。因此不能触发任何注册到AnyEvent的事件。
规则:如果您使用AnyEvent (或任何其他异步框架),就不要使用sleep。
有关正确的解决方案,请参阅user5402的答案。
https://stackoverflow.com/questions/6854962
复制相似问题