Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Program
- {
- static void Main()
- {
- int[] mass=new int[10000];
- var rand = new Random();
- var sum1 = 0;
- for (int i = 0; i < mass.Length; i++)
- {
- mass[i] = rand.Next(512);
- sum1 += mass[i];
- }
- var sum2 = sum(mass);
- Console.WriteLine("{0} {1}",sum1, sum2);
- }
- static int sum_simple(int[] list)
- {
- int evenSum = 0, oddSum = 0;
- Thread computeEvens = new Thread(() =>
- {
- int total = 0;
- for (int i = 0; i < list.Length; i += 2)
- total += list[i];
- evenSum = total;
- });
- Thread computeOdds = new Thread(() =>
- {
- int total = 0;
- for (int i = 1; i < list.Length; i += 2)
- total += list[i];
- oddSum = total;
- });
- computeEvens.Start();
- computeOdds.Start();
- computeEvens.Join();
- computeOdds.Join();
- return evenSum + oddSum;
- }
- static int sum_async(int[] list)
- {
- Func<int[], int> computeEvens = (input) =>
- {
- int total = 0;
- for (int i = 0; i < input.Length; i += 2)
- total += input[i];
- return total;
- };
- Func<int[], int> computeOdds = (input) =>
- {
- int total = 0;
- for (int i = 1; i < input.Length; i += 2)
- total += input[i];
- return total;
- };
- IAsyncResult evenRes =
- computeEvens.BeginInvoke(list, null, null);
- IAsyncResult oddRes =
- computeOdds.BeginInvoke(list, null, null);
- int evenSum = computeEvens.EndInvoke(evenRes);
- int oddSum = computeOdds.EndInvoke(oddRes);
- return evenSum + oddSum;
- }
- static int sum(int[] list)
- {
- int evenSum = 0, oddSum = 0;
- Parallel.Invoke(() =>
- {
- int total = 0;
- for (int i = 0; i < list.Length; i += 2)
- total += list[i];
- evenSum = total;
- }, () =>
- {
- int total = 0;
- for (int i = 1; i < list.Length; i += 2)
- total += list[i];
- oddSum = total;
- });
- return evenSum + oddSum;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement