可以在线程内部更改`Thread.current.object_id`吗?

时间:2012-11-27 16:53:29

标签: ruby multithreading thread-safety

我想知道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个月之后也会一样吗?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

puts Thread.current
#=> #<Thread:0x00000001d87fd8>
Thread.new{puts Thread.current}.join
#=> #<Thread:0x00000001f97120>

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