[Moscow.pm] HTTPD на короутинах

Alexandr Gomoliako zzz на zzz.org.ua
Вс Май 27 15:36:47 PDT 2012


> use Coro;
> use Coro::Timer qw(timeout);
>
> sub quorum_request {
>    my $min = shift;
>    my @list = @_;
>
>    my $res = Coro::Channel->new;
>    foreach my $e ( @list ) {
>        async {
>            print "$e at ". time ."\n";
>            sleepfor($e);
>            print "done $e at ". time ."\n";
>            $res->put($e);
>        };
>    }
>
>    return map $res->get, 1 .. $min;
> }
>
> my @res = quorum_request(2, qw(3 9 5));
> print join(', ', @res). "\n";
>
> # вернется сюда :)
>
> sub sleepfor {
>    my $timeout = timeout shift;
>    Coro::schedule; # wait until woken up or timeout
> }

Ну и? И так понятно, что так можно, а
> на __ одних корутинах __ вообще не реализуем

> Все это обсуждение - сплошное словоблудие и никакого намека на конструктивность.

Сложность - это конструктивно и вообще самое главное в
программировании. И все эти тонны парадигм и подходов нацелены только
на то, чтобы сделать программы менее сложными и более надежными. Ну
кроме корутин, они здесь не знаю на что нацелены, усложнить жизнь? :)


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