Nit*_*eti 1 multithreading ruby-on-rails jruby jrubyonrails ruby-on-rails-3
我在config.threadsafe!启用了线程模式()的JRuby 1.7上将Puma与Rails3一起使用 。
现在,随着理论的发展:对于传入的多个客户请求,将使用新线程来服务用户,而不是每次都启动新的Rails流程。
如果要查找此新请求线程的ID,该怎么办?
...查找当前正在执行Thread的ruby-way 的“唯一”线程ID :
Thread.current.object_id
Run Code Online (Sandbox Code Playgroud)
这将适用于所有红宝石,但是它可能并不是真正的“唯一”……看到一些服务器(puma也可能这样做)可能会重用“本地”线程(例如,使用固定线程池),因此id可能实际上对于两个接一个执行的请求是相同的。
根据实现细节,它可能是一个不同的ruby Thread对象(尽管不太可能),但是在JRuby下将是相同的Java Thread ...您可以使用以下方法获取“本机” java.lang.Thread ID:
JRuby.reference(Thread.current).native_thread.id
Run Code Online (Sandbox Code Playgroud)
通常,如果您需要每个请求真正真正独特的东西,则应基于(机架/轨道)Request对象本身,而该对象本身不会被应用程序/服务器重用(回收)。
| 归档时间: |
|
| 查看次数: |
2714 次 |
| 最近记录: |