如何在我的Rails线程池中加入“加入”?

时间:2017-01-18 16:53:42

标签: ruby-on-rails ruby multithreading join pool

我在Ruby 2.4中使用Rails 5.0。我有这个宝石

gem 'concurrent-ruby'

我想用工作加载一个线程池,但是我不希望执行继续unti thradpool中的所有内容都已完成执行。所以我试过了......

  pool = Concurrent::FixedThreadPool.new(@concurrent_threads) 
  links.each do |link|
    pool.post do
      ... do work ...
    end 
  end
  pool.shutdown 

但这似乎不起作用。也就是说,在“pool.shutdown”行之后执行了代码,我希望它有点像“.join”,即执行所有操作直到完成所有操作。我该怎么做?

1 个答案:

答案 0 :(得分:3)

the docs开始,在调用pool.shutdown后,您可以调用pool.wait_for_termination来阻止所有线程完成。