2012-04-07 2 views
1

Действительно ли 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 из другого процесса.

ответ