Почему бы не создать экземпляр класса и сохранить там запущенные потоки? Например:
class WorkingWithThread
attr_accessor :first_thread, :second_thread
def run
start_first_thread
start_second_thread
end
def start_first_thread
return puts("First thread already running") if self.first_thread
puts "Launching thread one!"
self.first_thread = Thread.new do
# do something
repeat # infinite loop
end
end
def start_second_thread
return puts("Second thread already running") if self.second_thread
puts "Launching thread two!"
self.second_thread = Thread.new do
# do something
repeat # infinite loop
end
end
def stop_threads
begin
Thread.kill first_thread if first_thread
Thread.kill second_thread if second_thread
p 'STOP THREADS'
rescue Exception => e
p 'NO THREADS OPENING'
end
end
end
Затем, чтобы использовать его:
worker = WorkingWithThread.new
worker.run
# => Launching thread one!
# => Launching thread two!
worker.run
# => First thread already running
# => Second thread already running
worker.stop_threads
# => STOP THREADS
Таким образом, вы будете иметь доступ к работающим потокам на всем протяжении - дайте мне знать, если это поможет и как вы продолжаете:)