任务分区

using System;
using System.Text;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Linq;
using System.Collections.Concurrent;

namespace Test
{
    class Program
    {

        /// <summary>
        /// 任务分区
        /// </summary>
        static void Main()
        {
            //var list = Enumerable.Range(1, 50).ToArray();
            var list = Enumerable.Range(1, 100).ToArray();


            //Parallel.ForEach(System.Collections.Concurrent.Partitioner.Create(0, list.Length), (Tuple<int, int> range, ParallelLoopState state, long partition) =>
            Parallel.ForEach(Partitioner.Create(0, list.Length), (range, state, partition) =>
            {
                string buffer = String.Format("Partitioner {0,3}:", partition);
                for (int i = range.Item1; i < range.Item2; i++)
                {
                    Thread.SpinWait(4000);
                    buffer += string.Format(" {0,3}", list[i]);
                }

                Console.WriteLine(buffer);
            });



            Console.WriteLine("\n执行完成");
            Console.ReadLine();
        }
    }
}

 

打印运行结果:

//var list = Enumerable.Range(1, 50).ToArray();
/*
Partitioner   0:   1   2   3   4
Partitioner   2:   9  10  11  12
Partitioner   4:  17  18  19  20
Partitioner   1:   5   6   7   8
Partitioner   3:  13  14  15  16
Partitioner   5:  21  22  23  24
Partitioner   6:  25  26  27  28
Partitioner   9:  37  38  39  40
Partitioner  11:  45  46  47  48
Partitioner  12:  49  50
Partitioner   8:  33  34  35  36
Partitioner  10:  41  42  43  44
Partitioner   7:  29  30  31  32

执行完成

*/


//var list = Enumerable.Range(1, 100).ToArray();
/*
Partitioner   0:   1   2   3   4   5   6   7   8
Partitioner   1:   9  10  11  12  13  14  15  16
Partitioner   3:  25  26  27  28  29  30  31  32
Partitioner   2:  17  18  19  20  21  22  23  24
Partitioner   7:  57  58  59  60  61  62  63  64
Partitioner   4:  33  34  35  36  37  38  39  40
Partitioner   6:  49  50  51  52  53  54  55  56
Partitioner   9:  73  74  75  76  77  78  79  80
Partitioner   5:  41  42  43  44  45  46  47  48
Partitioner   8:  65  66  67  68  69  70  71  72
Partitioner  12:  97  98  99 100
Partitioner  11:  89  90  91  92  93  94  95  96
Partitioner  10:  81  82  83  84  85  86  87  88

执行完成
 
*/

 

posted @ 2016-09-06 12:42  茗::流  阅读(97)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。