Вариант локального использования волокна
Я не уверен, что делаю это правильно, но вот мой сценарий: мне нужно создать поток для выполнения некоторого вызова 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, поэтому приношу свои извинения.