Действительно ли 0K использовать переменные класса для связи с потоками в Rails?Могу ли я использовать переменные класса для связи с потоками?
Есть ли какие-либо плюсы или минусы по сравнению с использованием очередей?
Я не уверен, если это работает в любой среде, он работал в шахте: Ruby Enterprise + Passenger + Nginx + Rails 3
Вот пример:
# rails runner "ThreadJob.new.run"
class ThreadJob
@@counter = 0
def run
producer = Thread.new do
1.upto 10 do
sleep 1
@@counter+= 1
puts "Producer: #{@@counter}"
end
end
consumer = Thread.new do
sleep 0.5
1.upto 10 do
sleep 1
@@counter-= 1
puts "Consumer: #{@@counter}"
end
end
producer.join
consumer.join
puts @@counter # result should be 0
end
end
Я интересно, если это может работать, если я изменяю @@ counter из другого процесса.