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?