Вариант локального использования волокна

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

0 ответов

Другие вопросы по тегам