亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 3855 | 回復(fù): 8
打印 上一主題 下一主題

關(guān)于ruby多終程的疑問(wèn) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2012-02-11 21:22 |只看該作者 |倒序?yàn)g覽
  1.     pages = %w( www.rubycentral.com
  2.             www.awl.com
  3.             www.pragmaticprogrammer.com
  4.            )
  5.     for n in pages  
  6.     thread=Thread.new(n){ |n|
  7.    
  8.      while true
  9.      puts n
  10.      sleep(rand(2)/1.0)
  11.     end
  12.    
  13.     }  
  14.     thread.join  
  15.     end  
復(fù)制代碼
為什么只是打印第一個(gè)網(wǎng)址

論壇徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
2 [報(bào)告]
發(fā)表于 2012-02-12 13:05 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2012-02-13 11:26 |只看該作者
本帖最后由 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.
  1. pages = %w( www.rubycentral.com
  2.             www.awl.com
  3.             www.pragmaticprogrammer.com
  4.           )

  5. threads = []

  6. pages.each do |page|
  7.   threads << Thread.new(page) do |url|
  8.     while true
  9.       puts url
  10.       sleep(rand(2)/1.0)
  11.     end
  12.   end
  13. end  
  14. threads.map(&:join)
復(fù)制代碼
to Sevk: 應(yīng)該是 yakczh 使用join方法不當(dāng)導(dǎo)致的。

論壇徽章:
3
寅虎
日期:2013-11-27 07:53:29申猴
日期:2014-09-12 09:24:152015年迎新春徽章
日期:2015-03-04 09:48:31
4 [報(bào)告]
發(fā)表于 2012-02-13 14:21 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
0
5 [報(bào)告]
發(fā)表于 2012-06-26 17:52 |只看該作者
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽

論壇徽章:
0
6 [報(bào)告]
發(fā)表于 2012-07-06 17:15 |只看該作者
壓根不是這個(gè)原因,你去看看for 和each 的區(qū)別就知道為什么了

論壇徽章:
0
7 [報(bào)告]
發(fā)表于 2012-08-09 03:33 |只看該作者
不錯(cuò)的~~! 感謝您提供

論壇徽章:
0
8 [報(bào)告]
發(fā)表于 2012-08-15 11:41 |只看該作者
本帖最后由 http80 于 2012-08-15 11:43 編輯

推薦:http://www.yiibai.com/ruby/ruby_multithreading.html
傳統(tǒng)程序中有一個(gè)執(zhí)行線程,包括程序的語(yǔ)句或指令順序執(zhí)行,直到程序終止.
一個(gè)多線程程序中有多個(gè)執(zhí)行線程。在每個(gè)線程中,語(yǔ)句順序執(zhí)行,但可parallel.on執(zhí)行線程本身多核的CPU,例如。多個(gè)線程往往在一個(gè)單CPU的機(jī)器,不實(shí)際執(zhí)行并行,但并行交錯(cuò)執(zhí)行的線程模擬.
Ruby可以很容易地寫(xiě)Thread類的多線程程序。 Ruby線程是一個(gè)輕量級(jí)的和有效的方式,以實(shí)現(xiàn)在你的代碼的并行.

創(chuàng)建Ruby線程:
要開(kāi)始一個(gè)新的線程,只是關(guān)聯(lián)與以Thread.new調(diào)用塊。將創(chuàng)建一個(gè)新線程執(zhí)行的代碼塊,并從Thread.new原來(lái)的線程將立即返回,并恢復(fù)執(zhí)行的下一條語(yǔ)句:

# Thread #1 is running here
Thread.new {
  # Thread #2 runs this code
}
# Thread #1 runs this code

論壇徽章:
0
9 [報(bào)告]
發(fā)表于 2012-10-12 22:17 |只看該作者
支持你加分
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP