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

    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 {
        # вернется сюда когда две любые ноды ответят.
        # т.е. если одна из трех упала, то она никого не задержит
    };
-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить