Thread Safety: Variáveis de classe em Ruby

Executar gravações / leituras em variáveis de classe em Ruby não é seguro para threads. Executar gravações / leituras em variáveis de instância parece ser seguro para threads. Dito isto, é seguro para threads executar gravações / leituras em variáveis de instância de um objeto de classe ou metaclasse?

Quais são as diferenças entre esses três exemplos (inventados) em termos de segurança de thread

EXEMPLO 1 EXCLUSÃO MÚTU

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

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

EXEMPLO 2: INSTANCE ARMAZENAMENTO VARIÁVEL

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

EXEMPLO 3: RTIGOS VARIÁVEIS EM METACLASS

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