欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#任務并行Parellel.For和Parallel.ForEach

 更新時間:2022年07月14日 08:45:27   作者:奮斗的大橙子  
這篇文章介紹了C#任務并行Parellel.For和Parallel.ForEach的用法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

簡介:任務并行庫(Task Parellel Library)是BCL的一個類庫,極大的簡化了并行編程。

使用任務并行庫執(zhí)行循環(huán)

C#當中我們一般使用for和foreach執(zhí)行循環(huán),有時候我們呢的循環(huán)結構每一次的迭代需要依賴以前一次的計算或者行為。但是有時候則不需要。如果迭代之間彼此獨立,并且程序運行在多核處理器上,如果能將不同的迭代放到不同的處理器上并行處理,則會獲益匪淺。Parallel.For和Parallel.ForEach就是為此而生的。

①使用Parallel.For 聲明如下:

這里可以看到 toExclusive這個參數(shù),它是不含的, 在使用的時候傳入?yún)?shù)要注意下。

舉個例子:

static void Main(string[] args)
{
    Parallel.For(0, 5, i =>
       {
           //打印平方
           Console.WriteLine("The Square of {0} is {1}", i, i * i);
       }
    );
    Console.ReadKey();
}

執(zhí)行結果:

The Square of 0 is 0
The Square of 2 is 4
The Square of 1 is 1
The Square of 4 is 16
The Square of 3 is 9

從執(zhí)行結果上我們可以看到,它不是按順序執(zhí)行的。那么問題來了,怎么讓結果保持有序?

我們可以通過一個數(shù)組來存儲執(zhí)行的結果,例如下面的例子:

static void Main(string[] args)
{
    const int maxValues = 5;
    int[] Squares = new int[maxValues];
 
    Parallel.For(0, maxValues , i =>Squares[i] = i*i );
 
    for (int i = 0; i < maxValues; i++) Console.WriteLine("Square of {0} is {1}", i, Squares[i]);
 
    Console.ReadKey();
}

我們首先定義了一個數(shù)組,然后由于數(shù)組的下標已經(jīng)定下來了,所以每次執(zhí)行都會存入具體的位置,然后遍歷結果的數(shù)組,就得到了有順序的結果。

②使用Parallel.ForEach

最簡單的實現(xiàn),聲明如下:

舉例:

static void Main(string[] args)
{
    string[] squares = new string[]
        {"We", "hold", "these", "truths", "to", "be", "self-evident", "that", "all", "men", "are", "created", "equal"};
 
    Parallel.ForEach(squares,
        i => Console.WriteLine(string.Format("'{0}' has {1} letters", i, i.Length)));
 
    Console.ReadKey();
}

結果:

'We' has 2 letters
'hold' has 4 letters
'these' has 5 letters
'to' has 2 letters
'truths' has 6 letters
'self-evident' has 12 letters
'that' has 4 letters
'be' has 2 letters
'men' has 3 letters
'are' has 3 letters
'created' has 7 letters
'equal' has 5 letters
'all' has 3 letters

這里同樣可以看到,不是按順序遍歷的。 

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

相關文章

  • C#結合數(shù)據(jù)庫實現(xiàn)驗證識別ID卡內容的方法

    C#結合數(shù)據(jù)庫實現(xiàn)驗證識別ID卡內容的方法

    這篇文章主要介紹了C#結合數(shù)據(jù)庫實現(xiàn)驗證識別ID卡內容的方法,非常實用的功能,需要的朋友可以參考下
    2014-07-07
  • C#中使用DevExpress中的ChartControl實現(xiàn)極坐標圖的案例詳解

    C#中使用DevExpress中的ChartControl實現(xiàn)極坐標圖的案例詳解

    這篇文章主要介紹了在C#中使用DevExpress中的ChartControl實現(xiàn)極坐標圖,本案例是使用的是DevExpress 18.1.3版本,之前在14版本上也試過,但是有一個弊端就是實現(xiàn)極坐標圖的時候,第一個點和最后一個點總是自動多一條閉合線,會形成一個閉合的多邊形,因此升級了一下版
    2022-02-02
  • C#執(zhí)行Javascript代碼的幾種方法總結

    C#執(zhí)行Javascript代碼的幾種方法總結

    本篇文章主要是對C#執(zhí)行Javascript代碼的幾種方法進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2014-01-01
  • C#中四步輕松使用log4net記錄本地日志的方法

    C#中四步輕松使用log4net記錄本地日志的方法

    下面小編就為大家分享一篇C#中四步輕松使用log4net記錄本地日志的方法,具有很好的參考價值。希望對大家有所幫助
    2017-11-11
  • Quartz.Net調度框架配置解析

    Quartz.Net調度框架配置解析

    這篇文章主要為大家詳細介紹了Quartz.Net調度框架的配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • c#實現(xiàn)sunday算法實例

    c#實現(xiàn)sunday算法實例

    Sunday算法思想跟BM算法很相似,在匹配失敗時關注的是文本串中參加匹配的最末位字符的下一位字符,下面是用C#實現(xiàn)sunday的實例代碼,有需要的朋友可以參考一下
    2013-08-08
  • C#如何快速釋放內存的大數(shù)組詳解

    C#如何快速釋放內存的大數(shù)組詳解

    這篇文章主要給大家介紹了關于C#如何快速釋放內存的大數(shù)組的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • C#使用Automation實現(xiàn)控制自動撥打接聽電話

    C#使用Automation實現(xiàn)控制自動撥打接聽電話

    這篇文章主要為大家詳細介紹了C#如何使用Automation實現(xiàn)控制自動撥打接聽電話,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • C#中動態(tài)數(shù)組用法實例

    C#中動態(tài)數(shù)組用法實例

    這篇文章主要介紹了C#中動態(tài)數(shù)組用法,實例分析了C#中ArrayList實現(xiàn)動態(tài)數(shù)組的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • 解讀赫夫曼樹編碼的問題

    解讀赫夫曼樹編碼的問題

    本篇文章對赫夫曼樹編碼的問題進行了分析說明,需要的朋友參考下
    2013-05-05

最新評論