0

我正在研究内部具有恒定循环的线程。我想检查线程睡眠的时间。

如何找到线程的休眠时间?

这是代码

 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
  }

我想知道休眠线程的时间,以便我可以杀死正确的线程。因为线程的生命应该在某个阶段被杀死

4

1 回答 1

2

您可以设置线程级别变量以在创建给定线程时获取信息:

t = Thread.new{}
t[:created_at] = Time.now

如果您想知道线程休眠了多长时间,您需要在每次线程进入休眠状态时设置该值,并在它唤醒时将其重置。所以你的支票看起来像

 th.kill if Time.now - th[:created_at] > MAX_THREAD_LIFETIME
于 2012-09-07T07:23:49.127 回答