Hi Danny, You can just add a counter for each thread and propagate the counter to the main thread at the end of the computation.
For instance, a hash local to each thread mapping from "job id" (in your case the name of the file) and the time. At the end of the execution, you can send the counters back to the main thread though a Queue and let the main thread do some statistics and output the results. I pseudocode: task queue Q; counters queue C; thread { create counter c_X; while there is "something" in Q do "something"; c_X{something} = time required to do "something"; enqueue c_X in C; } main { create N threads; load Q with the tasks to be done; wait the N thread to finish (join); get all the counters c_i from C; do something with c_1 ... c_N } Hope this helps! Cheers, nids ------------------------------ «Fear is not what's important; it's how you deal with it. It would be like asking a marathon runner if they feel pain. It's not a matter of whether you feel it; it's how you manage it.» — James Nachtwey On Tue, Nov 1, 2011 at 11:09 PM, Danny Wong (dannwong) <dannw...@cisco.com>wrote: > Hi Thread GURU, > I would like to perform the following, start X (say 10) number > of threads to perform some operation (ex. Copy command), I would like to > exit or return out of the thread(s) that takes too long ( ex. 30 minutes > ). I'm thinking I should spawn an independent thread (a watch thread) > and have that thread watch to see if any of the 10 threads are taking > longer than 30 minutes to complete. Any example how I can accomplish > this? Any other suggesting would be great to. > > BTW, I'm using perl 5.8.8., thread version 1.07. > > Thanks. >