Go并发与.Net TAP

Go

package main

import "fmt"

func sum(arrays []int, ch chan int) {
    fmt.Println(arrays)
    sum := 0
    for _, array := range arrays {
        sum += array
    }
    ch <- sum
}

func main() {
    arrayChan := make(chan int, 20)
    arrayInt := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
    for t := 0; t < 10; t++ {
        length := len(arrayInt)
        go sum(arrayInt[length-t:], arrayChan)
    }

    arrayResult := [10]int{0}
    for i := 0; i < 10; i++ {
        arrayResult[i] = <-arrayChan
    }
    fmt.Println(arrayResult)
}

  C#

class Program
    {
        static void Main(string[] args)
        {
            int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
            System.Collections.Concurrent.ConcurrentQueue<int> result = new System.Collections.Concurrent.ConcurrentQueue<int>();


            var r = Parallel.For(0, 10, i =>
              {
                  var index = arr.Length - i;
                  int[] arr1 = new int[i];
                  Array.Copy(arr, index, arr1, 0, i);
                  result.Enqueue(Sum(arr1));
              }
           );           

            foreach (var a in result)
            {
                System.Console.Write(a);
                System.Console.Write(" ");
            }
            System.Console.ReadLine();
        }

        static int Sum(int[] array)
        {
            int sum = 0;
            foreach (var i in array)
            {
                sum += i;
            }
            return sum;
        }
    }

  

原文地址:https://www.cnblogs.com/icoolno1/p/7533600.html