moritz has asked for the wisdom of the Perl Monks concerning the following question:
I ran into the problem that I might have many coroutines, and I want to run one specific of them, and after then return to the main coro.
use strict; use warnings; use Coro; my $ca = async { print "coro a\n"; cede; } my $cb = async { print "coro b\n"; cede; } print "In main\n"; cede; print "Back in main\n"; __END__ In main coro b coro a Back in main
Here in main I call cede, but I don't seem to have control which coro should be next, and which one should be called after that.
How can I influence the call order?
I tried to fiddle a bit with priorities, setting the one that I want to call to highest, and main to second highest priority, but it didn't work for me:
# coro definitions of $ca and $cb as above my $main = Coro::current; $main->prio(2); $ca->prio(3); cede; print "In main\n"; __END__ In main
As you can see, no other coro is called ;( Can I somehow tweak the priority system to achieve my goal? or is there an even better way?
Update: I know solved the Problem with Coro::Channel. The result is now on CPAN: Perl6::GatherTake.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Coro: running a specific coroutine
by Corion (Patriarch) on Apr 03, 2008 at 14:44 UTC | |
by moritz (Cardinal) on Apr 03, 2008 at 14:49 UTC | |
by Anonymous Monk on Apr 06, 2008 at 20:10 UTC |