[Moscow.pm] Эмуляция cede на AE...

Илья Винокуров ilvin на mail.ru
Вт Июн 17 01:52:39 PDT 2014


Это один из видов говна, которое может быть в голове...

Итак, зачем.
Имеем сокет, по которому в скрипт поступают команды и данные. В один момент поступила команда, но данные еще не дошли (несколько мегабайтов). Но мы уже знаем что за команда и какой для нее нужно сделать SQL запрос, который может выполняться параллельно приходящим данным.
Хочется при поступлении команды начать выполнять код, который задаст SQL запрос и потом при надобности подождет данных из сокета. Данные из сокета удобно завернуть в IO::Handle, а там интерфейс не колбэчный...
Конечно, задачу можно решить традиционным способом, но хотелось странного...

С почтением,
  Илья Винокуров.


Mon, 16 Jun 2014 20:08:36 +0400 от Mons Anderson <mons на cpan.org>:
>Зачем вам ЭТО?
>
>On 16.06.2014, at 11:54, Илья Винокуров < ilvin на mail.ru > wrote:
>>
>>Sun, 15 Jun 2014 23:22:56 +0300 от Андрей Костенко < andrey на kostenko.name >:
>>>Ох и говно в голове у вас, ребята
>>Давайте переведем разговор на другую тему и не будем обсуждать имидж страны Украина в глазах москалей.
>>
>>Недавно не осилил на AnyEvent сделать эмуляцию cede
>>
>>Какая была задумка:
>>
>>use AnyEvent;
>>
>>my $flag = 0;
>>
>>sub CEDE {
>>    my $cv = AE::cv;
>>    my $w = AE::idle sub {
>>        return unless $flag > 3;
>>        $cv->send;
>>    };
>>    $cv->recv;
>>    undef $w
>>}
>>
>>my ($w1, $w2);
>>$w1 = AE::timer 1, 1, sub { $flag++ };
>>$w2 = AE::idle sub {
>>    # Тут код
>>    CEDE(); # Здесь ждем выполнения условия
>>    # Продолжаем выполнение
>>};
>>
>>AE::cv->recv;
>>
>>Результат - ошибка:
>>EV: error in callback (ignoring): AnyEvent::CondVar: recursive blocking wait attempted
>>
>>В принципе возможна такая эмуляция или Марк сделал все, чтобы AE и Coro не конкурировали?
>>
>>С почтением,
>>  Илья Винокуров.
>>
>>-- 
>>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/20140617/18105fe6/attachment-0001.html>


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