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".
>

Reply via email to