我不确定我这样做是否正确,但这是我的场景:我需要创建一个线程来执行一些 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 的新手,所以我很抱歉。