无法正确执行ruby线程中的活动记录

时间:2017-07-21 22:18:59

标签: ruby-on-rails ruby multithreading activerecord

如何在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

但是我在日志中得到了一些回滚结果

enter image description here

我也试过以下代码:

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

结果相同。

这只是一个例子,将来我想在更复杂的代码中使用它。

0 个答案:

没有答案