Seguridad de subprocesos: Variables de clase en Ruby

Realizar escrituras / lecturas en variables de clase en Ruby no es seguro para subprocesos. Realizar escrituras / lecturas en variables de instancia parece ser seguro para subprocesos. Dicho esto, ¿es seguro para subprocesos realizar escritura / lectura en variables de instancia de una clase u objeto de metaclase?

¿Cuáles son las diferencias entre estos tres ejemplos (artificiales) en términos de seguridad de subprocesos?

EJEMPLO 1 EXCLUSIÓN MUTU

class BestUser # (singleton class)
  @@instance_lock = Mutex.new

  # Memoize instance
  def self.instance
    @@instance_lock.synchronize do
      @@instance ||= best
    end
  end
end

EJEMPLO 2: INSTANCE ALMACENAMIENTO VARIABLE

class BestUser # (singleton class)
  # Memoize instance
  def self.instance
    @instance ||= best
  end
end

EJEMPLO 3: INSTANCE ALMACENAMIENTO VARIABLE EN METACLASS

class BestUser # (singleton class)
  # Memoize instance
  class << self
    def instance
      @instance ||= best
    end
  end
end

Respuestas a la pregunta(6)

Su respuesta a la pregunta