2

我想知道是否Thread.current.object_id可以在同一个线程内更改;那是:

Thread.current.object_id #=> 11429860
# some ruby code
Thread.current.object_id #=> 11749360 different from the previous result

我想它不会改变,但也许Thread.current可以通过一些内部 Ruby 调用重新初始化......

我的意思是,如果我今天运行一个 ruby​​ 循环/守护程序/长期脚本(例如 Rails 应用程序),我应该期望Thread.current.object_id从现在起 6 个月后会是一样的吗?

4

2 回答 2

2

Thread.current 可以改变导致它返回当前正在执行的线程,线程对象 id 不会。

于 2012-11-27T16:59:04.167 回答
1
puts Thread.current
#=> #<Thread:0x00000001d87fd8>
Thread.new{puts Thread.current}.join
#=> #<Thread:0x00000001f97120>

对于您更新的问题。是的,只要没有重新启动,线程就会保持不变。计算机不会像您那样感觉到几秒钟和六个月之间的差异。

于 2012-11-27T17:14:51.800 回答