91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#任務并行Parellel.For和Parallel.ForEach怎么使用

發布時間:2022-07-14 10:29:38 來源:億速云 閱讀:206 作者:iii 欄目:開發技術

這篇文章主要介紹了C#任務并行Parellel.For和Parallel.ForEach怎么使用的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C#任務并行Parellel.For和Parallel.ForEach怎么使用文章都會有所收獲,下面我們一起來看看吧。

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

使用任務并行庫執行循環

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

①使用Parallel.For 聲明如下:

C#任務并行Parellel.For和Parallel.ForEach怎么使用

這里可以看到 toExclusive這個參數,它是不含的, 在使用的時候傳入參數要注意下。

舉個例子:

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

執行結果:

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

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

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

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();
}

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

②使用Parallel.ForEach

最簡單的實現,聲明如下:

C#任務并行Parellel.For和Parallel.ForEach怎么使用

舉例:

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#任務并行Parellel.For和Parallel.ForEach怎么使用”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C#任務并行Parellel.For和Parallel.ForEach怎么使用”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桂东县| 香河县| 滦南县| 澄迈县| 博客| 永善县| 许昌县| 洪泽县| 巴林右旗| 开阳县| 九龙城区| 东明县| 富顺县| 巴里| 三穗县| 玛曲县| 嘉兴市| 永州市| 桓台县| 湘阴县| 靖西县| 商水县| 烟台市| 高邮市| 嫩江县| 隆德县| 广元市| 商河县| 沁源县| 黄陵县| 凤凰县| 怀仁县| 临夏县| 饶河县| 定边县| 昌图县| 清镇市| 忻州市| 余庆县| 高雄县| 辽宁省|