.NET:如何并行的从集合中返还元素?
2024-10-15 18:17:10
实现代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using System.Collections.Concurrent; namespace CSharpStudy.ParallelStudy
{
class HowToReturnList
{
public static void Error_Test()
{
var list = Enumerable.Range(, ); var results = new List<string>();
Parallel.ForEach(list, (item) =>
{
results.Add("item:" + item);
}); Console.WriteLine(results.Count);
} public static void Lock_Test()
{
var list = Enumerable.Range(, ); var results = new List<string>();
Parallel.ForEach(list, (item) =>
{
lock (results)
{
results.Add("item:" + item);
}
}); Console.WriteLine(results.Count);
} public static void Concurrent_Collections_Test()
{
var list = Enumerable.Range(, ); var results = new ConcurrentQueue<string>();
Parallel.ForEach(list, (item) =>
{
lock (results)
{
results.Enqueue("item:" + item);
}
}); Console.WriteLine(results.Count);
} public static void Task_Test()
{
var list = Enumerable.Range(, ); var tasks = list.Select(item =>
{
return Task.Run<string>(() =>
{
return "item:" + item;
});
}).ToArray();
Task.WhenAll(tasks); Console.WriteLine(tasks.Select(x => x.Result).Count());
} public static void PLinq_Test()
{
var list = Enumerable.Range(, ); var results = list.AsParallel().Select(item => "item:" + item); Console.WriteLine(results.Count());
}
}
}
最新文章
- 《Java程序设计与数据结构教程(第二版)》学习指导
- How to configure SRTM elevations in WorldWind WMS
- MATLAB绘 透视图
- thymeleaf中的th:assert用法
- mysql 5.7 多源复制 原创
- Helpers\Request
- IDEA 创建maven-web project失败一例
- Logstash add_field 参数应用
- 算法优化(动态规划):COGS 2009. [USACO Mar09]餐厅清扫
- django 时间计数
- HTML5游戏开发引擎Pixi.js完全入门手册(一)框架简介及框架结构分析,作者思路剖析
- BOM基础(二)
- 本机安装mysql服务,步骤教程(另附SQLyog和Navicat工具)
- vue-cli工具搭建vue-webpack项目
- github仓库的使用
- IntelliJ Idea 第一次使用
- 什么是 Message Queue
- Intellij IDEA 生成返回值对象快捷键
- 20155234java实验一
- js外部样式和style属性的添加移除