Re: [閒聊] 大家工作上看過哪些誇張的 CODE ?
huh.. 看來這段 code 的原作才是專業哦
有興趣的可以寫一個小程式,這個小程式跑兩個 thread
主 thread 在營幕上列印訊息,另外一個副 thread 則跑類似下面的 code
你會發現副 thread 有加 sleep 和沒加 sleep 出來的結果可能會不一樣
沒加 sleep 的可能會佔掉大部份 CPU 資源,導致主 thread 沒什麼機會執行
有加 sleep 則比較可能如預期的,主 thread 不斷列印訊息
這是因為如果副 thread 只是單純的做 while() 且中間都是 CPU 運算的 code,
沒什麼 I/O 控制相關的呼叫,對系統來說反而是 CPU-intensive, 會佔掉大部
份的 CPU 資源,進而導致其它 thread 沒機會執行
而一般 sleep 函式的設計,除了 delay 外,還會讓出 CPU 控制權給 OS 去做
context-switching 到其它 thread
我記得好像 Windows 95 時代還是什麼時候的事了...
寫一個只做 while(1); 的程式可以佔掉整個系統 99% 的資源而讓系統當機...
當然這出來的行為一部份也跟 OS 的設計也有關
※ 引述《Ting1024 (無)》之銘言:
: ※ 引述《coronach (...)》之銘言:
: : 看過一種跑起來不會有問題
: : 但是還滿有趣的........
: : public void run(){
: : while(!progress.isVisible()){
: : Thread.sleep(1);
: : }
: : /* .............*/
: : }
: : 大概是覺得很趕時間.............
: 這不好笑阿,,,, sleep(0) or sleep(1)
: 基本上都只是暫時要把控制權給別的程式而已,
: 這樣寫有什麼好笑?
: 在window 下面 sleep(0) 約是 15ms, 控制權交出去
: 再跑回來, context switch 時間大約就是這樣...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.192.155.205
→
05/16 10:28, , 1F
05/16 10:28, 1F
推
05/16 14:43, , 2F
05/16 14:43, 2F
→
05/16 14:43, , 3F
05/16 14:43, 3F
→
05/16 23:57, , 4F
05/16 23:57, 4F
討論串 (同標題文章)
Soft_Job 近期熱門文章
29
63
PTT職涯區 即時熱門文章