如何在ruby中的线程中正确执行简单的ActiveRecord查询?
这里是没有线程的代码,一个简单的操作。
def no
1000.times do |i|
Post.create(name: 'fabian')
end
end
现在有线程我认为可能应该是:
def yes
1000.times do |i|
Thread.new do
Post.create(name: 'fabian')
end
end
end
但是我在日志中得到了一些回滚结果
我也试过以下代码:
def yes
threads = []
1000.times do |i|
threads << Thread.new do
begin
Post.create(name: 'fabian')
ensure
ActiveRecord::Base.connection_pool.release_connection
end
end
end
threads.map(&:join)
end
结果相同。
这只是一个例子,将来我想在更复杂的代码中使用它。