我工作的一些中間件軌,一個漂亮的新版本的工作:默認情況下,Rails是否具有* zero *併發性?
pfernand-2-mn:~ pfernand$ rails -v
Rails 3.1.2
這是rake middleware
輸出:
use ActionDispatch::Static
** use Rack::Lock **
use ActiveSupport::Cache::Strategy::LocalCache
use Rack::Runtime
use Rails::Rack::Logger
use ActionDispatch::ShowExceptions
use ActionDispatch::RemoteIp
use Rack::Sendfile
use ActionDispatch::Callbacks
use ActiveRecord::ConnectionAdapters::ConnectionManagement
use ActiveRecord::QueryCache
use ActionDispatch::Cookies
use ActionDispatch::Session::CookieStore
use ActionDispatch::Flash
use ActionDispatch::ParamsParser
use Rack::MethodOverride
use ActionDispatch::Head
use ActionDispatch::BestStandardsSupport
run MyApp::Application.routes
事情是,第二部分,Rack::Lock
是,as far as I know,一個互斥包裹整個frigging rails棧(!)。
這是否意味着在rails中不存在併發性,無論您使用的是哪種平臺? (我正在使用JRuby)。
我知道我可以刪除該鎖:
config.middleware.delete(Rack::Lock)
但可悲的是,打破一切。這是否意味着我的應用程序不是線程安全的?
簡短的歷史:軌道2不是,大家聲稱這是不可能的,merb證明,否則,合併到軌道3,所以3應該是。 – Reactormonk 2012-04-02 15:55:44
就是那裏的rails3,它在整個堆棧中都有一個互斥鎖。告訴我這是怎麼被認爲mutlithreaded – 2012-04-02 16:01:20
它是如何打破一切? – Reactormonk 2012-04-02 16:06:08