在 Rails 中使用类变量与线程通信是 0K 吗?
与使用队列相比有什么优点或缺点吗?
我不确定这是否适用于任何环境,它适用于我的: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 是否可以工作。