c:\test>junk Image Name PID Session Name Session# Mem Usage ========================= ====== ================ ======== ============ tperl.exe 10172 0 64,840 K Taken 3.278383 seconds c:\test>junk Image Name PID Session Name Session# Mem Usage ========================= ====== ================ ======== ============ tperl.exe 2924 0 173,516 K Taken 8.761321 seconds #### #! perl -slw use strict; use threads; use Time::HiRes qw[ time ]; sub simplesub { sleep 10, return 1 } my $start = time; my @threads = map{ threads->create( \&simplesub ) } 1 .. 10; my @array = 0 .. 1e5; my %hash = 1 .. 1e5; system qq[tasklist /fi "pid eq $$"]; printf "Taken %f seconds", time() - $start; $_->join for @threads; #### #! perl -slw use strict; use threads; use Time::HiRes qw[ time ]; sub simplesub { sleep 10, return 1 } my $start = time; my @array = 0 .. 1e5; my %hash = 1 .. 1e5; my @threads = map{ threads->create( \&simplesub ) } 1 .. 10; system qq[tasklist /fi "pid eq $$"]; printf "Taken %f seconds", time() - $start; $_->join for @threads; #### my( $Xthread ) = threads->create( { suspended => 1 }, \&Xthread ); my( $Ythread ) = threads->create( { suspended => 1 }, \%Ythread ); ... Do other stuff that gets me the parameters for X $Xthread->resume( $arg1, $arg2 ); ... Generate/fetch/calculate args for Y $Ythread->resume( $Yarg1, $Yarg2 ); ... tum te tum my( @Yresults ) = $Ythread->join; ... my( @Xresults ) = $Xthread->join;