ruby-on-rails – Rails 3 cattr_accessor线程安全吗?
发布时间:2020-12-17 02:35:21 所属栏目:百科 来源:网络整理
导读:Rails 3 cattr_accessor线程安全吗? 解决方法 不,这不对.快速查看cattr_reader代码: # File activesupport/lib/active_support/core_ext/class/attribute_accessors.rb,line 28def cattr_reader(*syms) options = syms.extract_options! syms.each do |sym
Rails 3 cattr_accessor线程安全吗?
解决方法
不,这不对.快速查看cattr_reader代码:
# File activesupport/lib/active_support/core_ext/class/attribute_accessors.rb,line 28 def cattr_reader(*syms) options = syms.extract_options! syms.each do |sym| class_eval( unless defined? @@#{sym} @@#{sym} = nil end def self.#{sym} @@#{sym} end,__FILE__,__LINE__ + 1) unless options[:instance_reader] == false class_eval( def #{sym} @@#{sym} end,__LINE__ + 1) end end end 你可以运行简单的测试: class A cattr_accessor :b end t1 = Thread.new { A.b = 1; sleep 1; p (A.b == 1); } t2 = Thread.new { A.b = 2 } t1.join t2.join # outputs "false" 这是一种让它在线程安全工作的方法:http://rails-bestpractices.com/posts/2010/08/23/fetch-current-user-in-models/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |