Hi, Thanks for the prompt response... and for staying with me in difficult times ;-) > Sorry, I can't understand what you mean. > Can you explain with some psedo-code? Well, if you change the code back to it's first version where: > > cmds = [ > > "ping 10.0.0.0 -n 30 -w 1000 > NUL", > > "ping 10.0.0.0 -n 60 -w 1000 > NUL", > > "ping 10.0.0.0 -n 90 -w 1000 > NUL" > > ] you will see that the threads are run sequentially and the program ends after (30 + 60 + 90) seconds. This is probably because the f.gets in the "while not f.eof?" loop for each thread stalls. See what I mean ? -- Shanko