Not withstanding Elain's point, you might find Re: Parallel DNS queries (use threads; ) and the associated thread interesting.
I only did brief tests with the code back then, and they were not scientific, but on Win32, it appeared as if the DNS lookups where overlapped to me.
Doing 10 lookups in parrallel taking approximately a fifth of the time required to do them sequentially. I have no idea whether this would be true for other OS's
It might be possible to improve that by using NET::DNS objects rather than spawning an external process, but I haven't tried that.
Examine what is said, not who speaks.
"Efficiency is intelligent laziness." -David Dunham
"Think for yourself!" - Abigail
"Memory, processor, disk in that order on the hardware side. Algorithm, algorithm, algorithm on the code side." - tachyon