我是C#4.0中并行编程类的新手; 正在尝试一个简单的for循环,我应该通过常规的for循环以顺序的方式从0到99打印,但是使用Parallel.For,我会在随机混乱的顺序中获得不连续的输出.
代码:
using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Parallel.For(0, 100, i => { //object sync = new object(); //lock (sync) { Console.WriteLine("Writing" + i); } }); Console.Read(); } } }
控制台上的一个输出:
Writing0 Writing1 Writing2 Writing3 Writing4 Writing5 Writing6 Writing7 Writing8 Writing9 Writing10 Writing11 Writing12 Writing13 Writing14 Writing15 Writing16 Writing17 Writing18 Writing19 Writing20 Writing21 Writing22 Writing23 Writing24 Writing25 Writing26 Writing27 Writing28 Writing29 Writing30 Writing31 Writing32 Writing33 Writing34 Writing35 Writing36 Writing37 Writing38 Writing39 Writing40 Writing41 Writing42 Writing43 Writing44 Writing45 Writing46 Writing47 Writing48 Writing49 Writing50 Writing66 Writing67 Writing68 Writing70 Writing71 Writing72 Writing73 Writing74 Writing75 Writing76 Writing77 Writing78 Writing69 Writing82 Writing83 Writing84 Writing85 Writing86 Writing87 Writing88 Writing89 Writing90 Writing51 Writing52 Writing53 Writing54 Writing55 Writing91 Writing92 Writing93 Writing94 Writing95 Writing56 Writing57 Writing79 Writing80 Writing81 Writing58 Writing59 Writing96 Writing97 Writing98 Writing99 Writing60 Writing61 Writing62 Writing63 Writing64 Writing65
在此先感谢您,无论您有什么帮助,我们都会帮助您.
那就是并行计算.任务排队,每个可用的处理器都有一个.如果完成,将向其发出下一个排队任务.没有关于将任务交付给处理单元的顺序的保证,也没有保证接下来要完成的任何保证,因此可并行代码与顺序代码+关键字不同parallel
.需要开发算法以便能够并行运行.在您的简单示例中,编写了从1到100的所有数字,但并行循环不会按照您期望的自然顺序写入它们.