当前位置:编程学习 > asp >>

.Net4.0 Parallel编程(三)Data Parallelism下

在上篇文章中介绍了如何Break、Stop循环,以及如何定义线程局部变量。在本文中介绍如何在外部去取消循环、以及异常的处理。

Cancel

在并行的循环中支持通过传递ParallelOptions参数中的aspx">CancellationToken进行取消循环的控制,我们可以CancellationTokenSource实例化之后传递给ParallelOptions对象Cancellation值。下面来看个示例:

 

01 [TestMethod]
02 public void CancelLoop()
03 {
04     var sourceNums = Enumerable.Range(0, 1000000000);
05     var cts = new CancellationTokenSource();
06     var po = new ParallelOptions();
07     var stack = new ConcurrentStack<int>();
08     po.CancellationToken = cts.Token;
09     po.MaxDegreeOfParallelism = System.Environment.ProcessorCount;
10     Task.Factory.StartNew(() =>
11     {
12         foreach (var num in sourceNums)
13         {
14             if (num == 1000000)
15                 cts.Cancel();
16         }
17     });
18  
19     try
20     {
21         Parallel.ForEach(sourceNums,po, num => 
22         {
23             stack.Push(num);
24             po.CancellationToken.ThrowIfCancellationRequested();
25
补充:Web开发 , ASP.Net ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,