我想做的是创建多个线程,每次使用稍微不同的参数调用相同的方法,如下所示:
x = 1
argument = 3
while x <= 10 do #10 is the number of desired threads
Thread.new{
puts do.stuff(argument)
}.join
x += 1
arguments += 1
end
我的问题是这个代码导致主线程停止,直到声明的线程完成。有什么方法可以创建这些线程,以便它们可以同时运行吗? 感谢。
答案 0 :(得分:1)
代码正在加入(等待线程终止;导致第二个线程在第一个线程完成后运行,第三个线程在第二个线程之后运行,......)在循环内。
创建线程,并在循环外等待它们。
arguments = "3"
threads = 10.times.map {
Thread.new {
puts do.stuff(arguments)
}
# NOTE: no join here.
}
threads.each { |t| t.join }