- 論壇徽章:
- 0
|
本帖最后由 bugbugbug3 于 2012-02-13 11:28 編輯
to yakczh :
1. 你寫(xiě)的代碼的錯(cuò)誤是:不應(yīng)該在 這個(gè)for循環(huán)里調(diào)用thread.join ,這樣會(huì)導(dǎo)致,你的循環(huán)第一遍時(shí)便在等著新創(chuàng)建的線程結(jié)束。換句話說(shuō),你的for循環(huán)只走了一趟而已。也只是創(chuàng)建了一個(gè)線程。解法是把join拿到外面。
2. 按照ruby的編碼風(fēng)格,不推薦用for循環(huán),使用each 加代碼塊 更有ruby的味道。
代碼大體修改如下(我用的是Ruby1.9.2),關(guān)鍵是別再循環(huán)里用join, 可以先把線程對(duì)象收集起來(lái),最后再用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)
復(fù)制代碼 to Sevk: 應(yīng)該是 yakczh 使用join方法不當(dāng)導(dǎo)致的。
|
|