隨着多核處理器越來越流行,我認爲熟悉如何編寫代碼以利用它們是明智的。我是一名.NET開發人員,我不知道從哪裏開始(嚴重的是,我有無線從哪裏開始)。有什麼建議麼?如何編寫利用多核處理器的.NET應用程序
回答
多核編程基本上是多線程編程。只要你的應用程序是多線程的,操作系統將決定運行哪個線程的核心。
那麼,你真正的問題應該是,什麼樣的應用程序會受益於多線程?想想這樣的應用程序,然後實例化多個線程來解決問題的相等部分。
這可能會使得good starting place。
最好的啓動方式是獲取並行擴展框架的最新CTP並開始翻閱他們的示例代碼。
查找在.NET 4.0的信息。它將爲它添加不同的構造。
閱讀.NET使用的異步編程模型。學習允許代理在線程池中執行的BeginXXX和EnxXXX範例。
Stream類都具有BeingXXX,EndXXX方法(例如BeginRead,EndRead),它們允許您執行異步IO。如果你正在處理大量基於IO的事情,你會希望使用這些方法來增加並行性。
「閱讀......」我認爲你有這些範例的理解。你有什麼材料可以建議我開始嗎? 謝謝! – 2009-03-03 20:40:27
我不經常推薦書,但喬達菲的Concurrent Programming on Windows是簡直無法替代的。
簡單地將您的項目分成專用於執行特定功能的各種線程,可讓您利用多個內核。操作系統處理將不同的線程調度到最可用的處理器內核。
就像JaredPar說的那樣,Parallel Extensions很不錯。我和他們一起玩,他們很容易使用,並增加了性能。
我很喜歡的構造是Parallel.ForEach()和PLinq。
Parallel.ForEach類似於DotNet 2.0集合中的ForEach(委託)函數。它需要一個動作委託並且並行地運行它。
Plinq允許您通過將.AsParallel()添加到查詢結尾來以並行方式執行任何常規Linq查詢。
查看Jared發佈的鏈接以獲取更多信息。
- 1. 如何讓我的C#應用程序利用多個處理器內核?
- 2. 多核處理器中的多線程應用程序
- 3. 如何爲F#應用程序編寫退出處理程序?
- 4. 如何讓mariadb 10充分利用多核處理器?
- 5. 如何將處理器核心專用於應用程序
- 6. 如何使用Python的多處理模塊編寫程序?
- 7. 如何編寫C++音頻處理應用程序?
- 8. 編譯器/彙編程序如何理解處理器內核寄存器?
- 9. Win32:計算多核/多處理器系統中的線程CPU利用率
- 10. .NET如何調試應用程序協議處理程序?
- 11. 使用雙核處理器的應用程序
- 12. Dalvik/JVM如何處理多處理的應用程序
- 13. 多線程Java應用程序是否會很好地利用多核機器?
- 14. 如何處理.net應用程序中的大量應用程序資源?
- 15. 如何爲處理程序編寫teamplate
- 16. Java應用程序的多核CPU利用率
- 17. 多核處理器上的多線程
- 18. 多核處理器的多線程
- 19. 如何編寫.Net應用程序的性能測試?
- 20. 用GUI包裝器編寫.NET控制檯應用程序
- 21. Web應用程序如何處理多個瀏覽器窗口
- 22. 如何剖析.NET應用程序的網絡利用率
- 23. 單對多線程的單核處理器的編程
- 24. 如何爲8086處理器編寫大於64KB的程序?
- 25. 如何在.NET核心應用程序中使用.NET核心類庫?
- 26. winforms應用程序中的多處理
- 27. 如何用Linux內核中的用戶定義處理程序替換缺省處理程序,該處理程序處理生成核心轉儲的異常?
- 28. 編寫使用處理程序的計時器在科特林
- 29. 如何利用Node.js使用多個處理器?
- 30. 如何編寫多線程的Pyside應用程序
也許並行擴展有點過分了。不應該通過手動線程開始一點,瞭解所有問題並學習基礎知識? – 2009-03-03 19:37:30
我傾向於認爲通過這些學習更好(因此我的答案是在.net 4.0上查找信息)。基本上,你花更少的時間在你如何把所有東西都搞定,並且花更多的時間來研究並行如何影響邏輯。如果沒有來源可用,你可以看到反射器:) – eglasius 2009-03-03 19:48:56