我正在处理内部具有常量循环的线程。我想检查线程正在睡多久。
如何找到线程的休眠时间?
这是代码
t = Thread.new{
loop do
puts "thread "
threads=Thread.list
threads.each_with_index do |th,index|
th.status == "run" ? th.priority = 2 : th.priority = 0
if th.status == "false" || th.status == "sleep"
th.kill
end
print "thread #{th} : State=> #{th.status} : priority=> #{th.priority} :index=> #{index} \n "
end
end
}
我想知道睡眠线程的时间,以便我可以杀死正确的线程。因为线程的生命应该在某个阶段被杀死
答案 0 :(得分:2)
您可以设置线程级别变量以在创建给定线程时获取信息:
t = Thread.new{}
t[:created_at] = Time.now
如果你想知道线程休眠多长时间,你需要在每次线程进入休眠状态时设置该值,并在线程唤醒后重置它。 所以你的支票看起来像是
th.kill if Time.now - th[:created_at] > MAX_THREAD_LIFETIME