Parallel 线程

来源:互联网 发布:广州打车软件 编辑:程序博客网 时间:2024/05/20 05:08

Parallel

1、就是对Task基础上封装多个任务,并行计算,主线程也会执行其中一个委托,本质就是Task+WaitAll

2、计算全部完成后才会进入下一行代码

3、看上去就是同步编程

4、一个亮点是可以控制同时使用的线程数量,多余任务会等待前面任务执行完之后,用空余线程执行


直接上代码了

 try            {                Console.WriteLine("************开始**************");                                //正常调用                Console.WriteLine("************正常调用**************");                Parallel.Invoke(                    () => {Console.WriteLine("方法1"); },                    () => {Console.WriteLine("方法2"); },                    () => {Console.WriteLine("方法3"); },                    () => {Console.WriteLine("方法4"); }                    );                //Parallel.For                Console.WriteLine("************Parallel.For**************");                Parallel.For(0, 5, t =>                {                    Console.WriteLine(t);                });                //Parallel.For                Console.WriteLine("************Parallel.For**************");                Parallel.ForEach(new int[]{1,2,5,4,78,5}, t =>                {                    Console.WriteLine(t);                });                //控制线程数                Console.WriteLine("************ParallelOptions**************");                ParallelOptions po = new ParallelOptions();                po.MaxDegreeOfParallelism = 2;//每次2条线程执行                Parallel.For(0, 5,po, t =>                {                    Console.WriteLine(t);                });                //退出循环 退出单次循环                Console.WriteLine("************退出单次循环**************");                Parallel.For(0, 5, (t,state) =>//参数这里需要传入state                {                    Console.WriteLine(t);                    if (t == 1) {                        state.Break();//退出单次循环                        return;//必须有                    }                });                //退出循环 退出所有循环                Console.WriteLine("************退出所有循环**************");                Parallel.For(0, 5, (t, state) =>//参数这里需要传入state                {                    Console.WriteLine(t);                                       state.Stop();//退出所有循环                        return;//必须有                                   });                Console.WriteLine("************结束**************");                Console.Read();            }            catch (Exception ex)            {                                //写日志            }


0 0
原创粉丝点击