So I plugged in your code to the script that I am writing which ssh's to different systems and runs a tasks. I want it to be able create 10 simultaneous ssh threads to 10 different systems (hence the array with 10 hostnames in the array). With your Thread::Queue code, the ssh is not concurrent (if there is a server that is not available for instance, the ssh command sits there till it times out before moving to the next one). Does this make sense?