在Ruby中创建多个相同的线程

时间:2014-12-07 02:42:30

标签: ruby multithreading

我想做的是创建多个线程,每次使用稍微不同的参数调用相同的方法,如下所示:

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

我的问题是这个代码导致主线程停止,直到声明的线程完成。有什么方法可以创建这些线程,以便它们可以同时运行吗? 感谢。

1 个答案:

答案 0 :(得分:1)

代码正在加入(等待线程终止;导致第二个线程在第一个线程完成后运行,第三个线程在第二个线程之后运行,......)在循环内。

创建线程,并在循环外等待它们。

arguments = "3"
threads = 10.times.map {
  Thread.new {
    puts do.stuff(arguments)
  }
  # NOTE: no join here.
}
threads.each { |t| t.join }