Я вызываю одну и ту же функцию Ruby с количеством потоков (например, 10 потоков). Каждый поток передает разные аргументы функции.Рубиновые потоки, вызывающие одну и ту же функцию с разными аргументами
Пример:
def test thread_no
puts "In thread no." + thread_no.to_s
end
num_threads = 6
threads=[]
for thread_no in 1..num_threads
puts "Creating thread no. "+thread_no.to_s
threads << Thread.new{test(thread_no)}
end
threads.each { |thr| thr.join }
Выход: Создание резьбы нет. 1 Создание потока №. 2 Создание резьбы №. 3 Создание резьбы №. 4 В резьбе № 4
Создание резьбы №. 5 Создание резьбы №. 6 не В нити No.6
В нить No.6
В нить No.6
В нить No.6
В нить No.6
Конечно, я хочу, чтобы получить результат: В потоке нет , 1 (2,3,4,5,6) Могу ли я как-то добиться того, что это сработает?
представления о рубине, но то же решение, как всегда следует применять: используйте локальную переменную local_thread_no для thread_no при передаче ее в конструктор потока – Voo