我的 Rails 3.1 应用程序使用一个引擎,我想知道对该引擎的访问是否是线程安全的。
我的引擎中有 /lib/mymodule.rb ,它看起来像这样:
module MyModule
def self.my_method()
begin
data = WebResource.find(:all) # Where WebResource < ActiveResource::Base
rescue
data = nil
end
return data
end
end
然后在我的视图/控制器中,我这样调用这个方法:
MyModule::WebResource.headers[:some_id] = cookies[:some_id]
MyModule::my_method()
在我的主应用程序中,我有线程安全!配置选项集。我知道线程安全!启用后,每个控制器针对每个请求都驻留在自己的线程中。
但是,这个模块是线程安全的吗?我怀疑这个模块对于所有请求只有一份副本,所以它is not本质上是线程安全的,并且需要使用互斥锁之类的东西进行手动同步。具体来说,我有设置 HTTP 请求标头的代码outsideActiveResource 类的WebResource
。这会导致线程问题吗?
这取决于您在此方法中所做的操作是否是线程安全的。如果它不触及类变量,那么它是线程安全的。
如果它在类级别存储或设置信息,并假设在再次使用该信息之前没有其他方法会接触该信息,那么它就不是线程安全的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)