在Ruby中執行對類變量的寫入/讀取操作不是線程安全的。對實例變量執行寫入/讀取似乎是線程安全的。也就是說,對類或元類對象的實例變量執行寫/讀操作是否線程安全?線程安全:Ruby中的類變量
在線程安全方面,這三個(人爲的)例子之間有什麼區別?
實施例1:互斥
class BestUser # (singleton class)
@@instance_lock = Mutex.new
# Memoize instance
def self.instance
@@instance_lock.synchronize do
@@instance ||= best
end
end
end
實施例2:INSTANCE變量存儲
class BestUser # (singleton class)
# Memoize instance
def self.instance
@instance ||= best
end
end
實施例3:INSTANCE變量存儲ON元類
class BestUser # (singleton class)
# Memoize instance
class << self
def instance
@instance ||= best
end
end
end
如果訪問實例變量實際上是線程安全的,或者僅僅基於我認爲它*看起來是*的假設,您知道副手嗎? – 2012-03-05 14:27:28
@AnomalousThought,查看有關線程安全性的一些信息的更新答案。 – 2012-03-05 17:24:07
@MatheusMoreira當你有機會時,你介意看看http://stackoverflow.com/questions/21735401/using-class-instance-variable-for-mutex-in-ruby嗎?謝謝。 – 2014-02-12 20:49:37