sectokia has asked for the wisdom of the Perl Monks concerning the following question:
Hi Monks,
I have list of async jobs that need to happen one after the other. I can do that as per example below. However it has a deep recursion problem that limits the size of the queue. Also it has to store all the async instances (in this example in @times) which is silly as only 1 is really active at a time.
What would be the correct way to do this without recurssion?
Thanks!
use AnyEvent; my @queue = (9,8,7,6,5,4,3,2,1); my @timers; my $cv = AnyEvent->condvar; DoQueue(); # Do other things here... $cv->recv; sub DoQueue { my $i = pop @queue; if (!defined $i) { $cv->send; return; } print "Starting async operation $i\n"; $timers[$i] = AnyEvent->timer(after => 1, interval => 0, cb => sub + { print "Finish async operation $i\n"; DoQueue(); }); }
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: AnyEvent - sequence of async operations without recursion?
by kschwab (Vicar) on Feb 10, 2021 at 22:38 UTC | |
by sectokia (Pilgrim) on Feb 11, 2021 at 01:49 UTC | |
by Anonymous Monk on Feb 11, 2021 at 16:36 UTC | |
by Anonymous Monk on Feb 11, 2021 at 16:50 UTC | |
Re:AnyEvent - sequence of async operations without recursion?
by bliako (Monsignor) on Feb 10, 2021 at 22:35 UTC | |
by ikegami (Patriarch) on Feb 11, 2021 at 06:34 UTC | |
Re: AnyEvent - sequence of async operations without recursion?
by Anonymous Monk on Feb 11, 2021 at 14:31 UTC |
Back to
Seekers of Perl Wisdom