今天被派到其他組做臨時支援,看到了Parallel。百度了下原來是做並行計算的。支援完畢后,自己了解了下,感覺C#提供的並行運算在使用形式上跟JQuery的$.each()有點類似。
Parallel.For(迭代系列的第一個參數,迭代系列最后一個索引值+1,在每個迭代參數中執行的委托)
1 static void Main(string[] args) 2 { 3 Parallel.For(0, 15, i => Console.WriteLine("第{0}個i", i)); 4 5 Console.ReadKey(); 6 }
1 static void Main(string[] args) 2 { 3 int arraySquare = 20; 4 int[] array = new int[arraySquare]; 5 Parallel.For(0, arraySquare, i => array[i] = i * i); 6 foreach (int item in array) 7 { 8 Console.WriteLine(item); 9 } 10 11 Console.ReadKey(); 12 }
----------------------------------------------------
Parallel.ForEach<迭代運算的每個元素數據類型>(要進行迭代運算的數據集合,要應用到集合中每個元素的Lambda表達式/委托/方法)
1 static void Main(string[] args) 2 { 3 int[] arrNew = { 1, 2, 3, 4, 5, 6, 7 }; 4 5 Parallel.ForEach(arrNew, i => { Console.WriteLine(i * i); }); 6 7 Console.ReadKey(); 8 }
-----------------------------------------------------------
無意中犯了一個錯誤,不過歪打正着,正好證明Parallel是多核執行的
1 static void Main(string[] args) 2 { 3 int[] arrNew = { 1, 2, 3, 4, 5, 6, 7 }; 4 Parallel.ForEach(arrNew, i => { GetArrayResult(arrNew); }); 5 Console.ReadKey(); 6 } 7 public static void GetArrayResult(int[] array) 8 { 9 for (int i = 0; i < array.Length; i++) 10 { 11 Console.WriteLine(string.Format("第{0}個索引數值是{1}", i, array[i])); 12 } 13 14 }