zoukankan      html  css  js  c++  java
  • .NET:如何并行的从集合中返还元素?

    实现代码

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Threading;
     7 using System.Collections.Concurrent;
     8 
     9 namespace CSharpStudy.ParallelStudy
    10 {
    11     class HowToReturnList
    12     {
    13         public static void Error_Test()
    14         {
    15             var list = Enumerable.Range(1, 1000);
    16 
    17             var results = new List<string>();
    18             Parallel.ForEach(list, (item) =>
    19             {
    20                 results.Add("item:" + item);
    21             });
    22 
    23             Console.WriteLine(results.Count);
    24         }
    25 
    26         public static void Lock_Test()
    27         {
    28             var list = Enumerable.Range(1, 1000);
    29 
    30             var results = new List<string>();
    31             Parallel.ForEach(list, (item) =>
    32             {
    33                 lock (results)
    34                 {
    35                     results.Add("item:" + item);
    36                 }
    37             });
    38 
    39             Console.WriteLine(results.Count);
    40         }
    41 
    42         public static void Concurrent_Collections_Test()
    43         {
    44             var list = Enumerable.Range(1, 1000);
    45 
    46             var results = new ConcurrentQueue<string>();
    47             Parallel.ForEach(list, (item) =>
    48             {
    49                 lock (results)
    50                 {
    51                     results.Enqueue("item:" + item);
    52                 }
    53             });
    54 
    55             Console.WriteLine(results.Count);
    56         }
    57 
    58         public static void Task_Test()
    59         {
    60             var list = Enumerable.Range(1, 1000);
    61 
    62             var tasks = list.Select(item =>
    63             {
    64                 return Task.Run<string>(() =>
    65                 {
    66                     return "item:" + item;
    67                 });
    68             }).ToArray();
    69             Task.WhenAll(tasks);
    70 
    71             Console.WriteLine(tasks.Select(x => x.Result).Count());
    72         }
    73 
    74         public static void PLinq_Test()
    75         {
    76             var list = Enumerable.Range(1, 1000);
    77 
    78             var results = list.AsParallel().Select(item => "item:" + item);
    79 
    80             Console.WriteLine(results.Count());
    81         }
    82     }
    83 }
  • 相关阅读:
    Linux三剑客之sed深度实践讲解(上)
    Linux第三阶段题型测试
    Linux正则表达式题型
    linux文本处理三剑客命令及用法
    SSH服务协议、部署ssh、scp、sftp服务
    NFS客户端挂载及永久生效
    SSH实现无密码登录
    NFS深度解析及搭建同步NFS服务
    NFS文件系统及搭建NFS共享服务
    Linux系统磁盘管理
  • 原文地址:https://www.cnblogs.com/happyframework/p/3627483.html
Copyright © 2011-2022 走看看