国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

淺談.Net并行計算之數據并行

2024-07-10 12:44:13
字體:
來源:轉載
供稿:網友

從第一臺計算機問世到現在計算機硬件技術已經有了很大的發展。不管是現在個人使用的PC還是公司使用的服務器。雙核,四核,八核的CPU已經非常常見。這樣我們可以將我們程序分攤到多個計算機CPU中去計算,在過去并行化需要線程的低級操作,難度很大,在.net4.0中的增強了對并行化的支持,使得這一切變得非常簡單 。本次我從以下幾個方面大家講以下.NET 并行

1.      數據并行
2.      任務并行
3.      并行Linq
4.      任務工廠
5.      注意事項
    

  本次主要給大家講一下數據并行 廢話不說,下面開始了

   數據并行其實就是指對原集合或者數組中的數據進行劃區之后分攤到多個CPU或者多個線程執行相同的操作 在 .net中的 System.Threading.Tasks 提供了對數據并行的支持類 , Parallel.For,Parallel.ForEach和我們經常的使用的for 和foreach 十分的相似,你不用創建線程隊列,在基本的循環中你不用使用鎖。這些.net 會幫你處理,你只需要關注你自己的業務  那下面我們就來看看 Parallel.For 和 Parallel.ForEach 是如何使用的

•     Parallel.For 簡單使用

代碼如下:
   Parallel.For(0, 100, i => {
                dosameting()
            });

上面的例子是不是和我們經常使用的for循環的影子。 說一下 Parallel.For 的第三個參數Action<int>類型的委托 不管這個委托的參數是0個還是多少個他的返回植都是void,那么怎么樣才能獲取到Parallel.For 中的的返回值了,下面的例子將演示如何使用線程本地變量來存儲和檢索由 for 循環創建的每個單獨任務中的狀態  通過使用線程本地數據,您可以避免將大量的訪問同步為共享狀態的開銷。  在任務的所有迭代完成之前,您將計算和存儲值,而不是寫入每個迭代上的共享資源。  然后,您可以將最終結果一次性寫入共享資源,或將其傳遞到另一個方法

•對個list<int> 進行求和我們這里假設List的長度為listLength
代碼如下:
   Parallel.For<long>(0, listLength, () => 0, (j, loop, subsum) =>
            {
                subsum += lista[j];
                return subsum;

            }, (x) => Interlocked.Add(ref sum, x));

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东兰县| 阜城县| 屯门区| 个旧市| 高淳县| 寻甸| 常德市| 寿宁县| 武城县| 南雄市| 井研县| 新平| 邯郸市| 丰宁| 页游| 峨山| 绵竹市| 虎林市| 金湖县| 安仁县| 禄劝| 怀化市| 烟台市| 思南县| 闻喜县| 兴安盟| 井冈山市| 安多县| 奉新县| 凌云县| 辉县市| 青田县| 襄城县| 衡东县| 洪江市| 婺源县| 丹巴县| 怀仁县| 辛集市| 霍山县| 福建省|