Ruby - 线程和队列

时间:2016-03-09 16:10:27

标签: ruby-on-rails ruby

我想使用线程和队列运行一些计算,任何人都可以帮助我下面的代码吗?它看起来是否正确,我需要一个队列吗?

  require 'thread'

  queue = Queue.new

  calculation = Thread.new do
    MyItem.find_each(start: 0, batch_size: 100) do |item|
        my_calc = ItemsCalculator.new(item)
        details_to_save = my_calc.get_details
        details_to_save.each do |dt|
          dt.save
        end
      end
  end

  puts "finished"

1 个答案:

答案 0 :(得分:0)

我们很难判断它是否“正确”,因为你没有告诉我们它应该做什么。

  

Queue提供了一种同步之间通信的方法   线程。

您是否尝试在线程之间同步数据?如果是,那么您应该使用Queue。但是,您的代码目前的工作方式只是创建新的Queue对象,但从未实际使用它。根据你的代码判断,我猜你不需要它。看起来您将计算结果保存到数据库中,因此您无需跨线程发送它们。