C# 并行执行

任务并行库 (TPL) 基于“任务”的概念,可代表异步操作。 在某些方面,任务类似于线程或 ThreadPool 工作项,但是抽象级别更高。 术语“任务并行”是指一个或多个独立的任务同时运行。 任务提供两个主要好处:

  • 系统资源的使用效率更高,可伸缩性更好。

    在后台,任务排队到 ThreadPool,其已使用算法进行增强,这些算法能够确定并调整到可提供最大化吞吐量负载平衡的线程数。 这会使任务相对轻量,您可以创建很多任务以启用细化并行。

  • 对于线程或工作项,可以使用更多的编程控件。

    任务和围绕它们生成的框架提供了一组丰富的 API,这些 API 支持等待、取消、继续、可靠的异常处理、详细状态、自定义计划等功能

//并行执行方法 ALL_Products是一个方法

System.Threading.Tasks.Parallel.Invoke(() => ALL_Products(iWine));

 /// <summary>
        ///好评排行(重新赋值)循环并行处理
        /// </summary>
        /// <param name="OladData">产品好评</param>
        /// <returns></returns>
        private List<ChartProScoreDto> Copey_Pro2(List<ChartProScoreDto> OladData)
        {
            List<ChartProScoreDto> utlist = new List<ChartProScoreDto>();
            if (OladData == null)
            {
                return utlist;
            }
          
            System.Threading.Tasks.Parallel.ForEach(OladData,item =>
            {
                //foreach (ChartProScoreDto item in OladData)
                // {
                ChartProScoreDto NewPro = new ChartProScoreDto();
                EnYuan.DEV.Mongo.EntityHelper.CopyProperties(item, ref NewPro);
                var place = Get_TastPlace(item.PlaceId);
                var pro = GetProduct(item.ProId);
                if (place != null)
                {
                    NewPro.PlaceId = place.Name;
                }
                if (pro != null)
                {
                    NewPro.ProId = pro.Name;
                }               
                lock (utlist)
                {
                    utlist.Add(NewPro);
                }
                // }
            });
            return utlist;
        }


更多介绍到:http://msdn.microsoft.com/zh-cn/library/dd537609(v=vs.110).aspx


C# 并行执行

上一篇:Spring框架学习【Spring使用Hessian实现远程调用】


下一篇:OMG 在线思维导图都有开源的