在Ruby中列出线程局部变量

时间:2012-08-20 22:40:29

标签: ruby

我们可以在Ruby上分配一个线程局部变量,如下所示:

Thread.current[:foo] = 1
Thread.current[:bar] = 2

但是我们如何在以后列出/枚举这些变量?

2 个答案:

答案 0 :(得分:6)

您可以使用Thread#keys获取密钥:

Thread.current[:foo] = 1
Thread.current[:bar] = 2
Thread.current.keys  # => [:__recursive_key__, :foo, :bar]

不知道这有多大帮助,因为你应该知道你使用了哪些键。

答案 1 :(得分:0)

 Thread.list.each { |t|
   p "T #{t.object_id} tvars:#{t.thread_variables.length} numkeys:#{t.keys.length}"
 }