全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2663
推到 Plurk!
推到 Facebook!

請問一下有關執行緒(Thread)的問題?謝謝

答題得分者是:Stallion
macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-06-25 14:08:37 IP:211.75.xxx.xxx 訂閱
請問各位,如果我要同時執行二個function的話,問題就是方法1->執行二個thread,方法2->只執行一個thread,請問一下,這二個有什麼差別嗎?對於cpu執行效率上會有差別嗎?還有如果這二個function都是跑相同的程式碼,則這二個方法,其執行的效率是相同的嗎?謝謝各位。
------
DELPHI初學者
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-06-25 15:00:51 IP:211.22.xxx.xxx 未訂閱
1.個人認為不管Function的內容是否一樣,你所謂的方法一是比較適當的寫法,不然要Thread幹嘛?
2.一個Process所Create起來的Thread愈多,當Thread在跑的時候,所耗費的CPU效能當然愈高,所以應當討論的是,不是Thread所耗費的CPU效能,而是在Multi-Thread的程式設計下,你所期望得到的程式執行結果效能是不是所期待的,CPU所費的效能不等於程式執行結果的效能。
===================引 用 macchen 文 章===================
請問各位,如果我要同時執行二個function的話,問題就是方法1->執行二個thread,方法2->只執行一個thread,請問一下,這二個有什麼差別嗎?對於cpu執行效率上會有差別嗎?還有如果這二個function都是跑相同的程式碼,則這二個方法,其執行的效率是相同的嗎?謝謝各位。
macchen
初階會員


發表:66
回覆:102
積分:33
註冊:2006-07-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-06-25 15:10:42 IP:211.75.xxx.xxx 訂閱
謝謝回覆,另外一問,就是在方法二,雖然是二個相同的function但是主程式可以run一個function另一個用thread,這樣效能會比較快嗎?
而且thread越多不是不能保證效率較高,只能說明對cpu的效能使用的越充份嗎?謝謝你。

===================引 用 Stallion 文 章===================
1.個人認為不管Function的內容是否一樣,你所謂的方法一是比較適當的寫法,不然要Thread幹嘛?
2.一個Process所Create起來的Thread愈多,當Thread在跑的時候,所耗費的CPU效能當然愈高,所以應當討論的是,不是Thread所耗費的CPU效能,而是在Multi-Thread的程式設計下,你所期望得到的程式執行結果效能是不是所期待的,CPU所費的效能不等於程式執行結果的效能。
------
DELPHI初學者
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-06-25 15:35:43 IP:211.22.xxx.xxx 未訂閱
1.要知道Thread執行的Function是要Thread safe的(何謂Thread safe,請自行查閱說明),如果你與主Thread共用這個function那麼就會很難設計,提高成功難度!
2.Thread鐵定是會使cpu的使用效能提升,至於對程式效能的影響,端視你的Function寫的好不好,寫的好,在Thread的模式下,當然效能也會好。
===================引 用 macchen 文 章===================
謝謝回覆,另外一問,就是在方法二,雖然是二個相同的function但是主程式可以run一個function另一個用thread,這樣效能會比較快嗎?
而且thread越多不是不能保證效率較高,只能說明對cpu的效能使用的越充份嗎?謝謝你。
===================引 用 Stallion 文 章===================
1.個人認為不管Function的內容是否一樣,你所謂的方法一是比較適當的寫法,不然要Thread幹嘛?
2.一個Process所Create起來的Thread愈多,當Thread在跑的時候,所耗費的CPU效能當然愈高,所以應當討論的是,不是Thread所耗費的CPU效能,而是在Multi-Thread的程式設計下,你所期望得到的程式執行結果效能是不是所期待的,CPU所費的效能不等於程式執行結果的效能。
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-06-26 13:59:51 IP:140.127.xxx.xxx 訂閱
Thread 可使增加程式效率,但不能增加程式效能
也無法增加 CPU 的使用率,CPU的使用率由系統排程決定
但使你可以增加,你的程式的執行率,修改優先等級

最後,如果是雙核,或是雙CPU,自己處理 CPU 間的問題,會比交由系統代勞來的有效率

一個CPU 單位時間能執行的指令,限制在本身硬體,要加效能,換個好一點的硬體囉
再多的 Thread 都無法使 100% 作的 CPU 跑上 300%
系統時間:2024-05-02 7:46:18
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!