[Phoenix-pm] greetings
Anthony Nemmer
intertwingled at qwest.net
Tue Jul 27 09:44:12 CDT 2004
Unix pipes implement a kind of coroutine chain of unix commands.
Scott Walters wrote:
>Well, coroutines are a lot like POE (or Event, or Stem), except
>when the event happens, rather than another routine being called, the
>current is allowed to continue. This means that you don't have to
>tuck all of your variables into an object to preserve them,
>and you don't have to return out of for() loops, if() statements,
>deeply nested function calls, and so on... but the POE stuff
>about not shooting yourself in the foot with threads still
>applies. And no special version of modules are required,
>as with threads.
>
>Here's a little script tht demonstrates continuations:
>
> use Coro;
> use Coro::Cont;
>
> use File::Find;
> use Perl6::Variables;
>
> sub get_next_perl :Cont {
> find(sub {
> return unless m/\.pl$/;
> open my $pl, '<', $_ or return;
> (my $shebang) = <$pl> =~ m/^#!(\S+)/ or return;
> yield $shebang;
> }, '/');
> return undef;
> }
>
> while(my $_ = get_next_perl()) {
> last unless defined $_;
> print $_, "\n";
> }
>
>This tries to find all of the Perl itnerpreters on your system that are
>in use. Coroutines are used to create detached processes and continuations
>are used to create closely coupled processes. In this case, control
>flops back and forth between get_next_perl() and the while(). Even
>as control flops back, the lexical variables inside get_next_perl()
>keep their value. More importantly, the call to File::Find::find() isn't
>exected out of. It would suck if that had to be restarted each time
>we wanted to know what interpreter the next file used. Likewise with a
>network application, this would be responsive, whereas storing everything
>in an array and returning a reference would wait a really long time and then
>suddenly have a whole bunch of data.
>
>Hrm. I should write some examples of gluing POE to Coro. Event handler stubs
>could execute a ->transfer() to transfer control to a specific coroutine.
>I wonder how Coro::Event does it...
>
>-scott
>
>On 0, Artful <ahenry-pm at artful2099.com> wrote:
>
>
>>>Anyone into multi-threaded perl programming? It's something I have no
>>>experience in and would love to see an overview if anyone is willing.
>>>Just a thought.
>>>
>>>Bobby
>>>
>>>
>>Threading in perl is cumbersome at best. I am falling in love with POE.
>>http://poe.perl.org/
>>
>>At first glance, it can seem complex, but the concept is pretty simple and
>>it is easy to pick up. There are a couple of recent articles at perl.com
>>covering it: http://www.perl.com/pub/a/2004/07/02/poeintro.html and
>>http://www.perl.com/pub/a/2004/07/22/poe.html
>>
>>-Art-
>>_______________________________________________
>>Phoenix-pm mailing list
>>Phoenix-pm at pm.org
>>http://www.pm.org/mailman/listinfo/phoenix-pm
>>
>>
>_______________________________________________
>Phoenix-pm mailing list
>Phoenix-pm at pm.org
>http://www.pm.org/mailman/listinfo/phoenix-pm
>
>
>
>
--
SKYKING, SKYKING, DO NOT ANSWER.
More information about the Phoenix-pm
mailing list