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.