[转].NET 并行编程之Parallel常用语法详解
目录
原文链接:
C#/.NET 并行编程Parallel常用语法详解——CSDN
Parallel用于并行编程,它是在Task的基础上做了封装 。它本身还是同步方法,一直阻塞到内部的并行任务结束才会执行后面的代码。
Parallel.Invoke 主要用于任务的并行#
这个函数的功能和Task有些相似,就是并发执行一系列任务,然后等待所有完成。和Task比起来,省略了Task.WaitAll这一步。它有两种形式:
Parallel.Invoke( params Action[] actions);
Parallel.Invoke (ParallelOptions parallelOptions, params Action[] actions);
/// <summary>
/// 尽可能并行执行多个任务
/// </summary>
public void StartManyTask()
{
Parallel.Invoke(
() => { },
() => { },
() => { });
}
Parallel.For、Parallel.ForEach并行循环迭代运行#
/// <summary>
/// 并行循环迭代运行
/// </summary>
public void CycleStartTask()
{
Parallel.For(0, 5, i => { });
Parallel.ForEach(new string[] { "0", "1", "2", "3", "4" }, i => { });
}
ParallelOptions 可以控制并发数量#
在有更多内核可用的情况下,使用静态的并行度值可能会限制可扩展性。
通常,比较好的做法是将MaxDegreeOfParallelism设置为Environment.ProcessorCount,或者将其设置为通过这个值计算出来的值(Environment.ProcessorCount*2)。
默认情况下,如果没有指定MaxDegreeOfParallelism,则TPL就会允许通过启发式算法提高或降低线程的数目,通常都会高于ProcessorCount,因为这样可以更好地支持CPU和IVO混合型的工作负载。
逻辑内核并不等同于真正的物理内核。默认情况下,TPL通过硬件线程数(即逻辑内核数)而不是物理内核数来优化其执行。
——C#并行编程高级教程:通.NET 4 Parallel Extensions (美)Gaston C.Hillar著
public void LimitThreadCount()
{
int maxCount = 5;
//parallelOptions 可以控制并发数量
ParallelOptions parallelOptions = new ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = maxCount;
Parallel.For(0, 10, parallelOptions, i => { });
}
Parallel常见用法#
#region 全局变量
/// <summary>
/// 任务并行度最大值:运行时的可用逻辑核心数的2倍
/// </summary>
public static int ProcessorCount = Environment.ProcessorCount*2;
/// <summary>
/// 任务并行默认配置:最大并行数为任务并行度最大值(可用逻辑核心数的2倍)
/// </summary>
public static ParallelOptions DefaultOptions = new ParallelOptions() { MaxDegreeOfParallelism = ProcessorCount };
#endregion
#region 方法调用
Parallel.For(0, 10, parallelOptions, i => { });
#endregion
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 领域驱动的事实与谬误 一 DDD 与 MVC
· SQL Server 2025 中的改进
· 当数据爆炸遇上SQL Server:优化策略全链路解析
· 记录一次线上问题排查:JDK序列化问题
· 微服务之间有哪些调用方式?
· 运维员工离职交接清单
· W.js ,一个超级小的三维 WebGL 引擎的使用方法
· Python 类不要再写 __init__ 方法了
· 大模型应用开发:利用 Spring-AI 实现高内聚低耦合可扩展的聊天应用
· 个人对Debian桌面系统的简单使用分享