【发布时间】:2012-12-03 22:31:03
【问题描述】:
我正试图从 MRI 与 JRuby 的角度来考虑多线程。 我已经完成了简单的 sinatra 应用程序:
require 'sinatra'
get '/long' do
sleep(10)
"Long operation finished"
end
get '/other' do
"Time now is #{Time.now}"
end
通过ruby app.rb 在 ruby 1.9.3 上运行它我期待当/long 被调用时,我将无法完成任何其他请求。但事实证明,即使/long 正在等待完成,我也可以在不同的浏览器中调用/other。
我被困在这里了。我认为这应该适用于 JRuby(当应用程序运行时,例如在特立尼达上),但不适用于 MRI。我想我必须生成几个实例才能让它以这种方式工作。
谁能解释我哪里错了?为什么即使长时间运行一个阻塞,我仍然可以得到其他请求的响应?
【问题讨论】:
标签: ruby multithreading sinatra jruby