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();
});
}
-
Are you posting in the right place? Check out Where do I post X? to know for sure.
-
Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big>
<blockquote> <br /> <dd>
<dl> <dt> <em> <font>
<h1> <h2> <h3> <h4>
<h5> <h6> <hr /> <i>
<li> <nbsp> <ol> <p>
<small> <strike> <strong>
<sub> <sup> <table>
<td> <th> <tr> <tt>
<u> <ul>
-
Snippets of code should be wrapped in
<code> tags not
<pre> tags. In fact, <pre>
tags should generally be avoided. If they must
be used, extreme care should be
taken to ensure that their contents do not
have long lines (<70 chars), in order to prevent
horizontal scrolling (and possible janitor
intervention).
-
Want more info? How to link
or How to display code and escape characters
are good places to start.
|