Parallel.ForEach 使用多线遍历循环

  Parallel.ForEach相对于foreach是多线程,并行操作;foreach是单线程品德操作。

  static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
            List<UserInfo> lst = new List<UserInfo> { };
            UserInfo[] array = new UserInfo[] {};
            for (int i = 1; i <= 10; i++)
            {
                lst.Add(new UserInfo { Age=new Random().Next(1,10),Id=Guid.NewGuid()});
            }
            foreach (var item in lst)
            {
                Console.WriteLine("循环更改前的值:"+item.Id+","+item.Age+","+item.Uname);
            }
            array = lst.ToArray();
            //注意Parallel.ForEach 里面传的是数组, MaxDegreeOfParallelism = Environment.ProcessorCount指的是系统有几个cpu就使用几个cpu
            ParallelLoopResult result = Parallel.ForEach(array, new ParallelOptions { MaxDegreeOfParallelism = Environment.ProcessorCount },item =>
            {
                item.Uname = "张" + item.Age;

            });
            foreach (var item in array)
            {
                Console.WriteLine("循环更改后的值:" + item.Id + "," + item.Age + "," + item.Uname);
            }
            Console.ReadKey();
        }
  public class UserInfo
    {
        public Guid Id { get; set; }

        public Int32 Age { get; set; }

        public String Uname { get; set; }
    }

原文地址:https://www.cnblogs.com/personblog/p/11640801.html

时间: 2024-10-19 02:34:48

Parallel.ForEach 使用多线遍历循环的相关文章

何时使用 Parallel.ForEach,何时使用 PLINQ

翻译自:When Should I Use Parallel.ForEach? When Should I Use PLINQ? 原作者: Pamela Vagata, Parallel Computing Platform Group, Microsoft Corporation 原文pdf:http://download.csdn.net/detail/sqlchen/7509513 ======================================================

Parallel.Foreach的全部知识要点【转】

简介 当需要为多核机器进行优化的时候,最好先检查下你的程序是否有处理能够分割开来进行并行处理.(例如,有一个巨大的数据集合,其中的元素需要一个一个进行彼此独立的耗时计算). .net framework 4 中提供了 Parallel.ForEach 和 PLINQ 来帮助我们进行并行处理,本文探讨这两者的差别及适用的场景. Parallel.ForEach Parallel.ForEach 是 foreach 的多线程实现,他们都能对 IEnumerable<T> 类型对象进行遍历,Para

Parallel ForEach For 多线程并行计算使用注意

之前用DataTable进行遍历,出现索引超出范围问题,因为List<T>也只支持单线程,改用 ConcurrentBag解决问题.在Parallel ForEach/For 外的变量要避免同时操作同一个变量造成 数据不一致的情况. List<T> 转为 ConcurrentBag ConcurrentBag<T> concT= new ConcurrentBag<T>(this.db.T.ToList());

Parallel.ForEach , ThreadPool.QueueUserWorkItem

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading; 6 using System.Threading.Tasks; 7 8 namespace ParallelThreadPool 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 {

C#多线程 为多核处理器而生的多线程方法Parallel.For和Parallel.ForEach

1.在.net4.0中,有了一个新的类库:任务并行库.它极大地简化了并行编程且内容丰富.这里仅介绍其中最简单的 Parallel.For循环和Parallel.ForEach循环.它们位于System.Threading.Tasks命名空间.它们是两个方法,这两个方法将迭代分别放在不同的处理器上并行处理,如果机器是多处理器或多核处理器,这样就会使性能大大提升. 2.例子用Parallel.For做计算,为数组赋值并打印,用Parallel.ForEach计算字符串数组每个元素的长度,运行结果:

微信小程序之使用wx:for遍历循环

效果图如下: 实现代码如下:type.js: // pages/type/type.js Page({ /** * 页面的初始数据 */ data: { types: "" }, editType: function (e) { var typeId = e.currentTarget.dataset['id']; console.log("edit:"+typeId); wx.navigateTo({ url: '../type_edit/type_edit?ty

C#并发实战Parallel.ForEach使用

前言:最近给客户开发一个伙食费计算系统,大概需要计算2000个人的伙食.需求是按照员工的预定报餐计划对消费记录进行检查,如有未报餐有刷卡或者有报餐没刷卡的要进行一定的金额扣减等一系列规则.一开始我的想法比较简单,直接用一个for循环搞定,统计结果倒是没问题,但是计算出来太慢了需要7,8分钟.这样系统服务是报超时错误的,让人觉得有点不太爽.由于时间也不多就就先提交给用户使用了,后面逻辑又增加了,计算时间变长,整个计算一遍居然要将近10分钟了.这个对用户来说是能接收的(原来自己手算需要好几天呢),但

Parallel for-each loops in .NET C# z

An IEnumerable object An Action of T which is used to process each item in the list List<string> dataList = new List<string> { "this", "is", "random", "sentence", "hello", "goodbye" }

(字符串的操作 for循环 和 while遍历循环)

1)字符串是什么,和字符串的常用操作方法 1,什么是字符串. 字符:是单一的文字符号, 字符串:是有序的字符序列,由" ' ''' """引起来的内容就是字符串. 2,字符串的常有操作方法 1,索引 [位置] 一排字符 反应第x个位置的字符 索引下标从0开始.使用[]来获取数据 例: s = '刘德华很帅但是张国荣更' print(s[2])打印出来的就是"华" 2,切片 [start:end:step] start代表起始位置 end代表结束的