Dlaczego to działa, jakby nie było wątku?
Piszę skrypt, który będzie pingował mój zasięg IP. Oto, co mam do tej pory:
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
Chodzi o to, że działa bardzo wolno. Podobnie jak aplikacja nie jest gwintowana. Dlaczego? Zauważyłem, że jeśli podklasuję wątek, cała rzecz działa dużo, dużo szybciej. Co jest nie tak? Czy wątek nie jest przeznaczony do bezpośredniego użytku?