【发布时间】:2014-07-23 16:31:38
【问题描述】:
我试图在主 ruby 线程中创建一个无限循环,同时在衍生线程中有无限循环,但这不起作用:
my_threads = []
for i in 1..2 do
puts "Creating thread #{i}"
my_threads << Thread.new(i) do |j|
loop do
sleep(1)
puts "work in #{Thread.current.object_id}"
end
end
end
my_threads.each do |t|
t.join
end
loop do
sleep(1)
puts 'work in main thread'
end
我需要这种方式,因为在我的 Rails 应用程序中,我不能在线程内使用 ActiveRecord 对象,如下所述:
所以我需要一个运行循环的主线程,同时让衍生线程同时运行它们自己的循环。
上面的代码是这样做的:
work in 79515570work in 79515510
work in 79515510work in 79515570
work in 79515510work in 79515570
work in 79515570work in 79515510
work in 79515570work in 79515510
work in 79515570
work in 79515510
work in 79515570
work in 79515510
work in 79515570work in 79515510
它永远不会到达主线程循环。我怎样才能做到这一点?
【问题讨论】:
标签: ruby multithreading