我有一个Ruby脚本使用线程读取HTML页面通过HTTP:确定红宝石线程状态
require "thread"
require "net/http"
q = Queue.new
q << "http://google.com/"
q << "http://rubygems.org/"
q << "http://twitter.com/"
t = Thread.new do
loop do
html = Net::HTTP.get(URI(q.pop))
p html.length
end
end
10.times do
puts t.status
sleep 0.3
end
我试图确定而它取出由给定的源内容的线程的状态。这是我得到的输出:
run
219
sleep
sleep
7255
sleep
sleep
sleep
sleep
sleep
sleep
65446
sleep
线程处于“休眠”状态,几乎所有的时间,虽然它的实际工作。我知道它正在等待HTTP类来检索内容。最后一次“睡眠”是不同的:线程试图从空队列中弹出值并切换到“睡眠”状态,直到队列中有新的东西。
我希望能够检查线程中发生了什么:它是在HTTP上工作还是等待新作业出现?
什么是正确的做法?
如果它回答你的问题,一定要接受一个答案。在最佳答案的编号下选择复选标记。 – vacawama