Not Exactly, I'll be more specific: I need to open a lot of threads with same name when passing different parameters to each. When inside each thread there is a system call which can take a lot of time. I want that after the system call ends the thread will close itself and remove itself from threads->list. For example:
while(...) #here will be some condition concerned with currently running threads i.e threads->list $thr=new threads \&create_thread, $param; $param=$param+1; sub create_thread { print("\nNew thread was started\n"); my @create_param = @_; system("..."); print ("\nOld thread was finished\n"); } Unfortunately this construction didn't worked because the threads->list didn't decremented by itself after the system call was finished? What should I do? Maybe use of "join" in some way? THANKS A LOT Igor -----Original Message----- From: zentara [mailto:[EMAIL PROTECTED] Sent: Friday, October 10, 2003 7:44 PM To: [EMAIL PROTECTED] Subject: Re: threads in perl On Wed, 8 Oct 2003 13:13:13 +0200, [EMAIL PROTECTED] (Igor Ryaboy) wrote: >Hi, >I need help in simple threaded solution. >How can I join the active thread? > >After I was started the thread I want him to join itself at the end and go back to >the main >Example: > ># main program >$thr1=new threads \&sub_name; >$thr2=new threads \&sub_name; >$thr3=new threads \&sub_name; >$thr4=new threads \&sub_name; > ># threaded subroutine >sub sub_name{ > print ("\nIn the thread!\n"); > # here I need help to join this thread after the print > >} > >I need that every started thread will be killed after finished and thread->list to be >updated Is this what you are thinking? #!/usr/bin/perl use threads; # join() does three things: it waits for a thread to exit, # cleans up after it, and returns any data the thread may # have produced. $thr1 = threads->new(\&sub1); $ReturnData1 = $thr1->join; print "Thread1 returned @$ReturnData1\n"; $thr2 = threads->new(\&sub2); $ReturnData2 = $thr2->join; print "Thread2 returned @$ReturnData2\n"; $thr3 = threads->new(\&sub3); $ReturnData3 = $thr3->join; print "Thread3 returned @$ReturnData3\n"; sub sub1 { @values = ('1a','1b', '1c'); return [EMAIL PROTECTED]; } sub sub2 { @values = ('2a','2b', '2c'); return [EMAIL PROTECTED]; } sub sub3 { @values = ('3a','3b', '3c'); return [EMAIL PROTECTED]; } __END__ Our body's 20 milligrams of beta radioactive Potassium 40 emit about 340 million neutrinos per day, which go at lightspeed to the ends of the universe!..even thru the earth. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]