Warum läuft das so, als wäre es kein Thread?

Ich schreibe ein Skript, das meinen IP-Bereich anpingt. Folgendes habe ich bisher:

lines = `ipconfig`.split("\n")
thr = []
ip_line = lines.detect { |l| l=~/Ip Address/i }
matcher = /\d+\.\d+\.\d+\.\d+/.match(ip_line)
if matcher.length > 0
    address = matcher[0]
    address.sub!(/\.\d+$/,"")
    (1 .. 254).each do |i|
        xaddr = address + "." + i.to_s
        puts "pinging #{xaddr}"
        thr << Thread.new {
            `ping #{xaddr}` 
        }
    end

    thr.each do |t|
        t.join
        output = t.value
        puts output
    end
end

Die Sache ist, das läuft extrem langsam ab. Als ob die App kein Thread ist. Warum das? Mir ist aufgefallen, dass, wenn ich Thread untergeordnet habe, das Ganze viel, viel schneller läuft. Was ist falsch? Ist Thread nicht für den direkten Gebrauch gedacht?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage