Почему это работает так, как будто оно не с резьбой?

Я пишу скрипт, который будет пинговать мой диапазон IP-адресов. Вот что у меня так далеко:

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

Дело в том, что это выполняется крайне медленно. Как будто приложение не содержит потоков. Почему это? Я заметил, что если я сделаю подкласс Thread, все это будет работать намного быстрее. В чем дело? Нить не предназначена для прямого использования?

Ответы на вопрос(4)

Ваш ответ на вопрос