- 论坛徽章:
- 0
|
本帖最后由 bugbugbug3 于 2012-02-13 11:28 编辑
to yakczh :
1. 你写的代码的错误是:不应该在 这个for循环里调用thread.join ,这样会导致,你的循环第一遍时便在等着新创建的线程结束。换句话说,你的for循环只走了一趟而已。也只是创建了一个线程。解法是把join拿到外面。
2. 按照ruby的编码风格,不推荐用for循环,使用each 加代码块 更有ruby的味道。
代码大体修改如下(我用的是Ruby1.9.2),关键是别再循环里用join, 可以先把线程对象收集起来,最后再用join.- pages = %w( www.rubycentral.com
- www.awl.com
- www.pragmaticprogrammer.com
- )
-
- threads = []
- pages.each do |page|
- threads << Thread.new(page) do |url|
- while true
- puts url
- sleep(rand(2)/1.0)
- end
- end
- end
- threads.map(&:join)
复制代码 to Sevk: 应该是 yakczh 使用join方法不当导致的。
|
|