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 に答える