Должны ли переменные экземпляра класса в Rails устанавливаться внутри мьютекса?

Допустим, у меня есть класс Ruby в моем проекте Rails, который устанавливает переменную экземпляра.

class Something
  def self.objects
    @objects ||= begin
      # some logic that builds an array, which is ultimately stored in @objects
    end
  end
end

Возможно ли, чтобы @objectsможно было установить несколько раз? Возможно ли, чтобы во время одного запроса при выполнении кода между begin/endвыше этот метод мог быть вызван во время второго запроса? Я полагаю, это действительно сводится к вопросу о том, как разветвляются экземпляры сервера Rails.

Должен ли я вместо этого использовать Mutexили синхронизацию потоков? например.:

class Something
  def self.objects
    return @objects if @objects

    Thread.exclusive do
      @objects ||= begin
        # some logic that builds an array, which is ultimately stored in @objects
      end
    end
  end
end
5
задан Matt Huggins 30 April 2012 в 15:50
поделиться