[Moscow.pm] AnyEvent condvar - reuse not possible?

Андрей П. Ковбович akovbovich на gmail.com
Ср Ноя 20 19:30:02 PST 2013


Рискну предложить Coro для sequential кода. Передача управления для
блокирующего кода на автомате. Но можно и самому - cede.

21 ноября 2013 г., 6:01 пользователь Mons Anderson <mons на cpan.org> написал:

> Простой и не очень правильный способ:
>
> delete $cv->{_ae_sent};
> https://metacpan.org/source/MLEHMANN/AnyEvent-7.05/lib/AnyEvent.pm#L1961
>
> Но позвольте поинтересоваться, в какой задаче у вас возникает
> необходимость вызывать recv?
>
> В нормальном приложении на anyevent recv может встречаться только 1 раз, и
> то, если вместо него не написан EV::loop (что более производительно).
>
> AE::cv { ... } + begin/end - это да, в большом количестве. Но не recv/send
>
> my ($t1, $t2);
> $t1 = AE::timer 1, 0, sub {
>  warn "1st timer fired";
>  undef $t1;
>  $t2= AE::timer (1, 0, sub {
>    undef $t2;
>    warn "2nd timer fired";
>    $cv->send;
>  });
> };
>
>
> лучше так:
>
> my $t; $t = AE::timer 1, 0, sub {
> warn "1st";
> $t = AE::timer 1, 0, sub { # unref old and keep new
> undef $t;
> warn "2nd";
> $cv->send;
> }
> }
>
>
> On 20.11.2013, at 20:13, Anton Yuzhaninov <citrin на citrin.ru> wrote:
>
> Хочется иметь condvar, которую можно использовать повторно, но похоже
> $cv->recv можно сделать только один раз.
>
> В таком коде:
>
> use AnyEvent;
>
> my $cv = AE::cv;
>
> $cv->begin;
>
> my $t1 = AE::timer 4, 0, sub { $cv->end };
>
> warn "wait for 1st timer";
>
> $cv->recv;
>
> warn "1st timer fired";
>
> $cv->begin;
>
> my $t2 = AE::timer 3, 0, sub { $cv->end };
>
> $cv->recv;
>
> Второй $cv->recv возвращается сразу без ожидания $cv->end в callback от
> второго таймера.
>
> Это баг или фича?
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
>
> --
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
>
>
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20131121/c83178c8/attachment.html>


Подробная информация о списке рассылки Moscow-pm