.Net並行編程之二:並行迴圈

來源:互聯網
上載者:User

標籤:style   blog   class   code   tar   color   

本篇內容主要包括:

1.能夠轉化為並行迴圈的條件

2.並行For迴圈的用法:Parallel.For

3.並行ForEach的用法Parallel.ForEach

4.並行LINQ(PLINQ)的用法AsParallel()

5.並行中斷與並行停止的用法與區別

6.外部控制迴圈取消的方法(Break,Stop)

7.處理迴圈體中拋出的異常

8.小迴圈體的分區並行方法:Parallel.ForEach

9.最大並行度的控制,Parallel.For,Parallel.ForEach

10.在迴圈體中使用局部任務狀態(個人理解就是迴圈體中包含幾個階段,但是這個階段又要求能安全執行緒的調用這些方法)

11.嘗試給並行迴圈定義自己的任務發送器。

12.注意事項。

-------------------華麗的分割線-----------------------------------------

1.能夠轉化為並行迴圈的條件

.Net Framework 4.0,VisualStudio2010,XP sp3,Vista SP1,Win7,Win8,Win2008...

對集合中的元素的操作是相同的並且互不影響,不互相影響是指執行的先後順序不影響最後結果。

生活中的情境舉例:

a:把銀行的多個服務視窗看成是多個處理器核心,不同的客戶取款操作是相互不影響的。當客戶總量一定時,多個視窗同時開放要比只開放一個視窗效率要高很多。

b:考試之後,老師判卷子,參加判卷子的老師越多,處理完所有卷子時間越短

c:程式中處理/初始化一個高數量級的對象數組,對象之間相互獨立

2.並行For迴圈的用法:Parallel.For 

public int NumberOfSteps = 10000000;double[] result = new double[NumberOfSteps];            for (int i = 0; i < NumberOfSteps; i++)            {                result[i] = DoWork(i);            }
一般的順序執行的For
  public int NumberOfSteps = 10000000; double[] result = new double[NumberOfSteps];            Parallel.For(0, NumberOfSteps, (i) =>            {                result[i] = DoWork(i);            });
並行的For

例子中的方法原型為:public static ParallelLoopResult For(int fromInclusive, int toExclusive, Action<int> body);

傳回值為ParallelLoopResult,指示結果的狀態,定義如下

 public struct ParallelLoopResult    {      public bool IsCompleted { get; }        public long? LowestBreakIteration { get; }    }    
ParallelLoopResult

Parallel.For 共有12種重載類型,上面是最簡單的一種,其它類型的重載可以用來指定一些並行啟動並執行配置,比如並行度,取消標幟等。

3.並行ForEach的用法Parallel.ForEach

未完待續...

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.