[SP-pm] AnyEvent::Util::fork_call() e IPC

Junior Moraes juniiior182 at gmail.com
Wed Jul 11 04:42:58 PDT 2012


Hi.

Wooooooooh, nigga! Lindo!
Exatamente o que eu queria, e até melhor já que a comunicação é até
automatizada. =p

Obrigado, Stan! :-D

[]'s

Em 10 de julho de 2012 17:59, Stanislaw Pusep <creaktive em gmail.com>escreveu:

> Cara, não é bem por aí que se usa fork_call :)
> Infelizmente, tive que dar um RTFS para cair a ficha, então sua dúvida é
> mais do que compreensível.
> Trocando em miúdos, fork_call funciona da seguinte maneira:
>

> my $cv = AnyEvent->condvar;
> for my $url (@{$urls}) {
>     $cv->begin;
>     fork_call {
>         return extract_links($url);
>     } sub {
>         push @pool, @{shift};
>         $cv->end;
>     }
> }
> $cv->wait;
>
> Traduzindo: o primeiro bloco sub {} é o que rodará dentro do child. O
> resultado retornado dentro desse bloco sofre um freeze() e é retornado, via
> canal IPC adequado para o seu OS (pipe em UN*X, socket TCP em Win), para o
> parent. O segundo bloco roda no parent, recebe o buffer do child, dá um
> thaw() e retorna em @_. Ou seja, lembre-se disso: o primeiro bloco é child,
> o segundo é parent. Child herda o escopo léxico do parent, mas somente
> devolve o q vc quiser retornar.
>
> ABS()
>
>
>
> 2012/7/10 Junior Moraes <juniiior182 em gmail.com>
>
>>  Hi.
>>
>> Estou tendo um (óbvio) problema pra sharear variáveis utilizando o método
>> fork_call() do módulo AnyEvent::Util, e como tudo o que eu menos quero é
>> usar threads, então preciso de ajuda.
>>
>> Como o próprio nome do método diz, já esperava ter exatamente este
>> problema por se tratar de um *fork* visto que um processo não acessa o
>> outro, mas esperava achar uma solução mais simples pra conseguir fazer o
>> IPC.
>>
>> Alguém já trabalhou com este método e conseguiu obter uma solução
>> interessante?
>> Escrevi um código simplório pra vocês entenderem melhor. No caso, o array
>> *@pool* que vem zerado, já que o push ocorre num processo separado :(
>> https://gist.github.com/3086129
>>
>> Alguma *fucking* idéia?
>>
>> Obrigado desde já!
>> []'s
>>
>>
>> --
>>
>>
>>  ______________________
>> < Junior "fvox" Moraes >
>>  ----------------------
>>    \
>>     \
>>         .--.
>>        |o_o |
>>        |:_/ |
>>       //   \ \
>>      (|     | )
>>     /'\_   _/`\
>>     \___)=(___/
>>
>>
>>
>> =begin disclaimer
>>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
> =begin disclaimer
>    Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 


 ______________________
< Junior "fvox" Moraes >
 ----------------------
   \
    \
        .--.
       |o_o |
       |:_/ |
      //   \ \
     (|     | )
    /'\_   _/`\
    \___)=(___/
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120711/f30a6bc2/attachment.html>


More information about the SaoPaulo-pm mailing list