Re: [問題] 關於Thread

看板Ruby作者 (郭大維老師大好人)時間17年前 (2007/11/01 13:28), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《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
文章代碼(AID): #17AMGLSg (Ruby)
討論串 (同標題文章)
本文引述了以下文章的的內容:
8
13
以下文章回應了本文
完整討論串 (本文為第 2 之 3 篇):
8
13
文章代碼(AID): #17AMGLSg (Ruby)