台灣最大程式設計社群網站
線上人數
1372
 
會員總數:244792
討論主題:188838
歡迎您免費加入會員
討論區列表 >> VB.NET >> 請問有關VB.net開發的程式在多核CPU執行的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
請問有關VB.net開發的程式在多核CPU執行的問題
價值 : 100 QP  點閱數:334 回應數:14

樓主

KSRS
門外漢
0 25
444 59
發送站內信

請問各位先進大德,小弟在VB.net環境開發的程式,在多核CPU環境執行時是否能充分使用到多核CPU的效能?還是只能使用到多核CPU中之單核而已?因為小弟想藉此確認升級CPU是否對執行效率有幫助? 多謝諸位關心 KSRS 敬上





搜尋相關Tags的文章: [ 硬體執行效率 ] , [ 多核CPU ] ,
本篇文章發表於2019-06-10 15:29
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

P陳
檢舉此回應
最近剛好有玩到這塊。

據個人瞭解,不管有多少核,只會某個核中由前而後執行。
因為在初始時 有要去開數個 datatable,主程式有堵住的感覺了。

然後將開數個 datatable 的動作,丟給多執行緒來執行,主程式立即回應。由其他核繼續 開DataTable。
再查了 CPU 效能,有分散出去
本篇文章回覆於2019-06-10 17:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

KSRS
檢舉此回應
P陳大德您好
根據您上面所述,需要以開啟多個執行緒去開database才會利用到多核的功能是嗎?如果是的話,請指示一下如何以多執行緒的方式開啟database?或指點哪裡有示範資料可以看看?感謝您
敬祝 萬事如意 KSRS 敬上
本篇文章回覆於2019-06-10 18:45
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

誰是誰
檢舉此回應
關鍵字 : Task Parallel Library

如果高並發玩得熟,當然能充分用到多核的效能;不過, 這牽涉到很多的層面。如果高並發寫得不好,效能搞不好還往下降。
本篇文章回覆於2019-06-10 20:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

P陳
檢舉此回應
誰是誰說的沒有錯。
會用到多執行緒的動作都是要可以抽的離的動作。
還要寫同步偵測的動作,在某個時間點時要確認是否有完成,否則就要加以等待。

會寫的話多執行緒才能真正利用的多核的效能
本篇文章回覆於2019-06-11 14:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

KSRS
檢舉此回應
P陳大德您好
所以多執行緖的程式基礎是很複雜與困難的是嗎?可以在多指點一些方向嗎?多謝您
本篇文章回覆於2019-06-11 14:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

誰是誰
檢舉此回應
你有用心在看別人回應嗎 ? 把關鍵字放進 google search 有這麼難嗎 ?
本篇文章回覆於2019-06-11 15:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

誰是誰
檢舉此回應
If you new thread, you write legacy code.
本篇文章回覆於2019-06-11 15:34
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

KSRS
檢舉此回應
誰是誰大德
小弟駑鈍,經您指點,豁然開朗,馬上去google去,謝謝您 KSRS敬上
本篇文章回覆於2019-06-11 15:36
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
最有價值解答

誰是誰
檢舉此回應
第一個結果應該就是微軟的文件了吧。
以 .NET 4.0 以後的開發觀念來說,其實盡量避免自己直接使用 Thread Class ,事實上, 使用 ThreadPool 都比直接用 Thread 來得好。
因為要直接使用 Thread Class 考慮的層面太多,像是 (a) 應該開多少 Thread 才是合理的? (b) 在大量並發的狀態下,有無能力控制好 Thread 的啟動順序 (c) 應該如何分配 Thraed 給不同密集型任務 (cpu bound , i/o bound) (d) 多重 thread 並發時的同步.....

大部分人都覺得會 new Thread 、會 control.invoke 就以為自己懂執行緒,如果以珠穆朗瑪峰比喻高並發程式碼的巔峰,只懂那兩樣大概只能算在海平面以下。

除非你用的 .NET Framework 不支援,否則直接學 TPL 是比較省事的,它幫你解決了許多傳統上直接 new Thread 所產生的副作用。
本篇文章回覆於2019-06-11 15:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

KSRS
檢舉此回應
誰是誰大德 您好
感謝您的回函,內容非常深奧,我會很努力讀,並且會在google上多搜一些佐證資料協助我了解您的內容,感謝您的支持與協助 KSRS敬上
本篇文章回覆於2019-06-11 16:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

誰是誰
檢舉此回應
剛開始先學會以下幾樣

先學 Task , Task<TResult> 和 TaskFactory, TaskFactory<Result>

Task 先學 Start, Run, Wait, Delay 方法
TaskFactory 先學 StartNew 方法

再來學取消 Task

接著學 Parallel.For , Parallel.Foreach

本篇文章回覆於2019-06-11 16:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
作者回應

KSRS
檢舉此回應
非常感謝 誰是誰 大德的指點 KSRS 敬上
本篇文章回覆於2019-06-11 18:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

誰是誰
檢舉此回應
啊,我還少講一個 Result property 也是要先注意的
本篇文章回覆於2019-06-11 20:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
作者回應

KSRS
檢舉此回應
感謝 13F 提點
本篇文章回覆於2019-06-12 00:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.