Я пытаюсь создать счетчик статистики (похожий на страус для scala от Твиттера), но с трудом проверяю, чтобы все мои потоки имели к нему доступ.Мой класс Stats определен так:
class Stats
@@counters = {}
.. accessors ..
def self.incr(counter, amt = 1)
if !@@counters[counter]
@@counters[counter] = java.util.concurrent.atomic.AtomicInteger.new()
end
@@counters[counter].getAndAdd(amt)
end
end
Я знаю, что есть некоторые проблемы с безопасностью потоков самого хэша счетчиков.Если я создаю потоки вручную, кажется, что они могут получить доступ к Stats.counters глобально, но я пытаюсь создать приложение для рэкапа (Sinatra, встроенное в Jetty с помощью jetty-rackup), чтобы показать эту информацию, а в этом приложении SinatraСтатистика пуста.Есть ли хороший способ поделиться этим счетчиком с другими частями приложения или sinatra делает что-то, что очищает область глобальных переменных?