日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

C#任務(wù)并行Parellel.For和Parallel.ForEach_C#教程

作者:奮斗的大橙子 ? 更新時(shí)間: 2022-09-06 編程語(yǔ)言

簡(jiǎn)介:任務(wù)并行庫(kù)(Task Parellel Library)是BCL的一個(gè)類庫(kù),極大的簡(jiǎn)化了并行編程。

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

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

①使用Parallel.For 聲明如下:

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

舉個(gè)例子:

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

執(zhí)行結(jié)果:

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í)行結(jié)果上我們可以看到,它不是按順序執(zhí)行的。那么問(wèn)題來(lái)了,怎么讓結(jié)果保持有序?

我們可以通過(guò)一個(gè)數(shù)組來(lái)存儲(chǔ)執(zhí)行的結(jié)果,例如下面的例子:

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

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

②使用Parallel.ForEach

最簡(jiǎn)單的實(shí)現(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();
}

結(jié)果:

'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

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

原文鏈接:https://www.cnblogs.com/dcz2015/p/11015163.html

欄目分類
最近更新