> Покажу еще пример, который на одних корутинах вообще не реализуем,
> случайно вспомнил:

> sub quorum_request {
> my $cb = pop;
> my $min = pop;
> my @res;

> foreach my $node (@_) {
> send_request $node, "something", sub {
> push @res, [shift];

> if (--$min == 0) {
> &$cb(@res);
> }
> };
> }
> }

> quorum_request "foo:1234", "bar:2345", "baz:80", 2, sub {
> # вернется сюда когда две любые ноды ответят.
> # т.е. если одна из трех упала, то она никого не задержит
> };

почему ты думаешь что это нельзя сделать на короутинах? тот же счетчик
будет сколько их ответило. кстати по хорошему прерывать еще надо
процессы опрашивающие ноды что сверх 2 продолжат работать.


-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить