Advertisement
andruhovski

Parallel Demo

Sep 13th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.62 KB | None | 0 0
  1.  class Program
  2.     {
  3.         static void Main()
  4.         {
  5.             int[] mass=new int[10000];
  6.             var rand = new Random();
  7.             var sum1 = 0;
  8.             for (int i = 0; i < mass.Length; i++)
  9.             {
  10.                 mass[i] = rand.Next(512);
  11.                 sum1 += mass[i];
  12.             }
  13.  
  14.             var sum2 = sum(mass);
  15.             Console.WriteLine("{0} {1}",sum1, sum2);
  16.  
  17.         }
  18.         static int sum_simple(int[] list)
  19.         {
  20.             int evenSum = 0, oddSum = 0;
  21.             Thread computeEvens = new Thread(() =>
  22.             {
  23.                 int total = 0;
  24.                 for (int i = 0; i < list.Length; i += 2)
  25.                     total += list[i];
  26.                 evenSum = total;
  27.             });
  28.             Thread computeOdds = new Thread(() =>
  29.             {
  30.                 int total = 0;
  31.                 for (int i = 1; i < list.Length; i += 2)
  32.                     total += list[i];
  33.                 oddSum = total;
  34.             });
  35.             computeEvens.Start();
  36.             computeOdds.Start();
  37.             computeEvens.Join();
  38.             computeOdds.Join();
  39.             return evenSum + oddSum;
  40.         }
  41.  
  42.         static int sum_async(int[] list)
  43.         {
  44.             Func<int[], int> computeEvens = (input) =>
  45.             {
  46.                 int total = 0;
  47.                 for (int i = 0; i < input.Length; i += 2)
  48.                     total += input[i];
  49.                 return total;
  50.             };
  51.             Func<int[], int> computeOdds = (input) =>
  52.             {
  53.                 int total = 0;
  54.                 for (int i = 1; i < input.Length; i += 2)
  55.                     total += input[i];
  56.                 return total;
  57.             };
  58.             IAsyncResult evenRes =
  59.                 computeEvens.BeginInvoke(list, null, null);
  60.             IAsyncResult oddRes =
  61.                 computeOdds.BeginInvoke(list, null, null);
  62.             int evenSum = computeEvens.EndInvoke(evenRes);
  63.             int oddSum = computeOdds.EndInvoke(oddRes);
  64.             return evenSum + oddSum;
  65.         }
  66.  
  67.         static int sum(int[] list)
  68.         {
  69.             int evenSum = 0, oddSum = 0;
  70.             Parallel.Invoke(() =>
  71.             {
  72.                 int total = 0;
  73.                 for (int i = 0; i < list.Length; i += 2)
  74.                     total += list[i];
  75.                 evenSum = total;
  76.             }, () =>
  77.             {
  78.                 int total = 0;
  79.                 for (int i = 1; i < list.Length; i += 2)
  80.                     total += list[i];
  81.                 oddSum = total;
  82.             });
  83.             return evenSum + oddSum;
  84.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement