C#~异步编程再续~大叔所理解的并行编程(Task&Parallel)
并行这个概念出自.net4.5,它被封装在System.Threading.Tasks命名空间里,主要提供一些线程,异步的方法,或者说它是对之前Thread进行的二次封装,为的是让开发人员更方便的调用它,对于异步与多线程我们在之前的几讲里已经介绍过了,今天主要说说并行,并行也可以叫并行计算,即对于一个大任务,使用多个线程去计算它,这可以充分发挥多核CPU的优势,可以说是大事所趋!
先看一下并行编程(并行计算)的图像
对于两个任务,任务1执行需要1秒,任务2执行需要3秒,那么,如果顺序执行,它需要的时间为4秒(1+3),而如果是并行编程,那就运行时间为3秒,即(1和3一起运行,取最长的时间),这就是并行计算的魅力!
下面看两种并行的实现方式
一 Task实现的并行
#region 并行Task Console.WriteLine(DateTime.Now); var task = Task.WhenAll(Task.Run(() => { Thread.Sleep(1000); }), Task.Run(() => { Thread.Sleep(2000); }));//多个task并行执行,不阻塞 task.ContinueWith((ctw) =>//当task完成后,执行这个回调 { Console.WriteLine("并行完成" + DateTime.Now); }); Console.WriteLine(DateTime.Now); #endregion
二 Parallel实现的并行
#region 并行Parallel Console.WriteLine(DateTime.Now); Parallel.Invoke(() => { Console.WriteLine(Thread.CurrentThread.ManagedThreadId); Thread.Sleep(1000); }, () => { Console.WriteLine(Thread.CurrentThread.ManagedThreadId); Thread.Sleep(2000); }); Console.WriteLine(DateTime.Now); Console.ReadKey(); #endregion
通过上面的图我们可以看到,在进行并行测试时,运行时间为两秒!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2012-05-26 Attribute有啥用~MVC中标准的用户登陆验证
2011-05-26 为JS和C#类加一个扩展方法吧:P
2011-05-26 说说面向对象的故事,主人是人类!(三)