2012-04-07 6 views
1

Ist es 0K, Klassenvariablen zu verwenden, um mit Threads in Rails zu kommunizieren?Kann ich Klassenvariablen verwenden, um mit Threads zu kommunizieren?

Gibt es irgendwelche Vor- oder Nachteile im Vergleich zur Verwendung von Warteschlangen?

Ich bin nicht sicher, ob dies in jeder Umgebung funktioniert, funktioniert es in meinem: Rubin Unternehmen + Passagier + nginx + Rails 3

Hier ist ein Beispiel:

# 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 

ich mich, wenn Dies kann funktionieren, wenn ich @@ counter in einem anderen Prozess ändere.

Antwort