0

我不确定我这样做是否正确,但这是我的场景:我需要创建一个线程来执行一些 API 调用,并在进行 API 调用时继续正常操作。这部分很好。当我想重新加入时会出现问题。我目前正在另一个模块中创建一个线程并希望重新加入另一个模块。因此,我无法使用对之前创建的线程的引用。

为了克服这个问题,我这样做了:Thread.current[:ref_to_new_thread] = Thread.new { API CALL }

最后,我使用 -Thread.current[:ref_to_new_thread].join

这是正确的方法吗?或者,还有更好的方法。

最小的可重现示例:

文件 1:

module A
 module Aa
  def my_method
   #some actions
   Thread.current[:ref_to_new_thread] = Thread.new { API CALL }
   #some actions
  end
 end
end

文件 2:

module B
 module Bb
  def my_second_method
   #some actions
   Thread.current[:ref_to_new_thread].join
   Thread.current[:ref_to_new_thread] = nil
  end
 end
end

我是 ruby​​ on rails 的新手,所以我很抱歉。

4

0 回答 0