作者wwwc (郭大維老師大好人)
看板Ruby
標題Re: [問題] 關於Thread
時間Thu Nov 1 13:28:50 2007
※ 引述《wwwc (郭大維老師大好人)》之銘言:
: 環境:
: ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux]
: 狀況:
: 爬文得知ruby沒有native thread,但必須做類似下列的工作,
: 卻發生非預期性的結果
: 附錄:
其實我要做的事情比較像這樣
server = TCPServer.new(ip, port)
a = 0
t = Thread.new{
#計算accept的次數
while server.accept
a += 1
end
}
while a < 50
end
#當accept次數大於等於50後才執行的code
while a < 60
end
#當accept次數大於等於60後才執行的code
最後補不補t.join都無所謂
要補也行
希望描述得夠清楚
先謝謝各位!
: a = 0
: start = Time.new
: t = Thread.new{
: while a < 10000000
: a += 1
: end
: }
: while(a < 5000000)
: #p a
: end
: puts Time.new - start
: #a >= 5000000後的code
: 輸出的結果大約是6.2秒
: 但若將第二個迴圈內的註解拿掉
: 也就是改成
: while(a < 5000000)
: p a
: end
: 其他維持原狀
: 輸出的結果竟然是3.2秒
: 反而快了3秒!?
: 有什麼合理的解釋嗎?
: 因為希望等到a >= 5000000後再繼續執行下面的工作
: 所以才讓他跑空迴圈...
: 該怎麼改能更有效率的達到上述要求?
: 小弟是ruby新手
: 請不吝賜教
: 感謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.109.23.118