Ruby on rails 我可以使用类变量与线程通信吗?
使用类变量与Rails中的线程通信是否是0K 与使用队列相比,有什么优点或缺点 我不确定这是否适用于任何环境,它适用于我的环境:Ruby Enterprise+Passenger+nginx+Rails 3 下面是一个例子:Ruby on rails 我可以使用类变量与线程通信吗?,ruby-on-rails,ruby,nginx,thread-safety,passenger,Ruby On Rails,Ruby,Nginx,Thread Safety,Passenger,使用类变量与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 sl
# 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,我想知道这是否可行。不,像您的示例那样从多个线程更新类变量是不合适的 请看一看为什么以及如何使用互斥类解决此问题的说明: