C# Parallel 多线程并发

Parallel并发执行多个任务 多线程的,主线程会参与计算---阻塞界面等于TaskWaitAll+主线程计算

常用方法

1、Invoke  尽可能并行执行提供的每个操作

复制代码
 1             Console.WriteLine("***************Parallel.Invoke Start******************");
 2             Parallel.Invoke(
 3                 () => Console.WriteLine("action0"),
 4                 () => Console.WriteLine("action1"),
 5                 () => Console.WriteLine("action2"),
 6                 () => Console.WriteLine("action3"),
 7                 () => Console.WriteLine("action4"),
 8                 () => Console.WriteLine("action5"),
 9                 () => Console.WriteLine("action6"));
10             Console.WriteLine("***************Parallel.Invoke End******************");
11             Console.WriteLine();
View Code
复制代码

2、For  并行运行迭代,可以配置循环选项,可以监视和操作循环的状态

复制代码
1             Console.WriteLine("***************Parallel.For Start******************");
2             Parallel.For(0, 5, i => Console.WriteLine($"Parallel.For{i}"));
3             Parallel.For(0, 5, (i,p) => Console.WriteLine($"Parallel.For{i} {p.IsExceptional}"));
4             Console.WriteLine("***************Parallel.For End******************");
5             Console.WriteLine();
View Code
复制代码

3、Foreach 并行运行迭代,可以配置循环选项,可以监视和操作循环的状态

复制代码
1             var array = new[] { "A", "B", "C", "D", "E" };
2             Console.WriteLine("***************Parallel.ForEach Start******************");
3             Parallel.ForEach(array, s => Console.WriteLine(s));
4             Console.WriteLine("***************Parallel.ForEach End******************");
5             Console.WriteLine();
View Code
复制代码

 

有没有办法不阻塞主线程?结合Task

复制代码
1                 Task.Run(() =>
2                 {
3                     ParallelOptions options = new ParallelOptions();
4                     options.MaxDegreeOfParallelism = 3;
5                     Parallel.For(0, 10, options, s => Console.WriteLine(s));
6                 });
View Code
复制代码

微软文档:

Parallel:https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.parallel?view=netframework-4.8

ParallelOptions:https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.tasks.paralleloptions?view=netframework-4.8

posted @   德乌姆列特  阅读(719)  评论(1编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理
点击右上角即可分享
微信分享提示