To my knowledge, if the thread hangs on a system call, then you'll need to do something similar to what was suggested by the previous poster.
On Wed, Sep 29, 2010 at 10:47, Danny Wong (dannwong) <dannw...@cisco.com> wrote: > Hi Jerry, > Is there an example you or someone can provide, if the thread is > hanging, I would just like the thread to "return failure or timeout" and > ignore the system call. Let the system call hang and I'll clean it up > afterwards at the very end of the script. > > Sincerely yours, > Danny H. Wong > > -----Original Message----- > From: jdhed...@gmail.com [mailto:jdhed...@gmail.com] On Behalf Of Jerry > D. Hedden > Sent: Wednesday, September 29, 2010 5:47 AM > To: Danny Wong (dannwong) > Cc: perl-ithreads@perl.org > Subject: Re: Killing a thread > > Danny Wong wrote: >> Here is my situation. I started, say 10 threads, executing >> some command, 1 or 2 of them is hanging for over 2 hours. >> I want to put in some logic that if the thread run time >> passes an hour threshold kill that thread or return and >> fail the thread. Any ideas on how I can accomplish this >> task? Thanks. > > This problem is addressed in the 'examples/pool.pl' file in > the 'threads' distribution on CPAN. From the POD (note the > third bullet): > > NAME > pool.pl - Simple 'threads' example > > DESCRIPTION > A simplistic example illustrating the following: > * Management of a pool of threads > * Communication between threads using queues > * Timing out and cancelling threads > * Interrupting a threaded program > * Cleaning up threads before terminating > > However, if the 'hung' threads are stuck on some system > call, then the above will not work because of Perl's "safe > signals". You'll need to read the section called "Deferred > Signals (Safe Signals)" in "perldoc perlipc". >