in reply to create new task from main program
And here's some working threads code to get you started.
Note:depending upon what you are doing in your sub, and whether you need the results from the subs back in the main program, it could get more complicated than this--but it will at least be doable.
#! perl -slw use strict; use threads; $|=1; my @threads; for my $i ( 1 .. 10 ) { ## if the condition is true if( $i & 1 ) { ## every odd number matches ## Start a thread to run the sub ## Passing the number as an argument ## And saving the thread object, push @threads, async \&other, $i; } } ## Wait for all the threads to finish $_->join for @threads; ## Done. exit; sub other{ my( $number ) = @_; print "Other( $number ) starting"; ## pretend we're doing something that takes a while... for( 1 .. rand 10 ) { print "Other( $number ) busy ..."; sleep 1; } print "Other( $number ) finished"; } __END__ C:\test>542468 Other( 1 ) starting Other( 1 ) busy ... Other( 3 ) starting Other( 3 ) busy ... Other( 5 ) starting Other( 5 ) busy ... Other( 7 ) starting Other( 7 ) busy ... Other( 9 ) starting Other( 9 ) finished Other( 1 ) busy ... Other( 3 ) finished Other( 5 ) busy ... Other( 7 ) busy ... Other( 1 ) busy ... Other( 5 ) finished Other( 7 ) busy ... Other( 1 ) busy ... Other( 7 ) busy ... Other( 1 ) busy ... Other( 7 ) busy ... Other( 1 ) busy ... Other( 7 ) busy ... Other( 1 ) busy ... Other( 7 ) busy ... Other( 1 ) finished Other( 7 ) busy ... Other( 7 ) finished
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: create new task from main program
by benlaw (Scribe) on Apr 12, 2006 at 16:40 UTC | |
by BrowserUk (Patriarch) on Apr 12, 2006 at 16:51 UTC | |
by benlaw (Scribe) on Apr 12, 2006 at 17:34 UTC | |
by benlaw (Scribe) on Apr 13, 2006 at 06:44 UTC | |
by BrowserUk (Patriarch) on Apr 14, 2006 at 12:40 UTC |