任务和线程的区别
在我们了解 Task 之前,如果我们要使用多核的功能可能就会自己来开线程,然而这种线程模型在. net 4.0 之后被一种称为基于“任务的编程模型” 所冲击,因为 task 会比 thread 具有更小的性能开销,不过大家肯定会有疑惑,任务和线程到底有什么区别?
1:任务是架构在线程之上的,也就是说任务最终还是要抛给线程去执行。
2:任务跟线程不是一对一的关系,比如开 10 个任务并不是说会开 10 个线程,这一点任务有点类似线程池,但是任务相比线程池有很小的开销和精确的控制。
方式 1:
private static void Main(string[] args) { var t1 = new Task(() => TaskMethod("Task 1")); System.Console.WriteLine(t1.Status); t1.Start(); System.Console.WriteLine(t1.Status); Task.WaitAll(t1); System.Console.WriteLine(t1.Status); } private static void TaskMethod(string v) { System.Console.WriteLine(v); }
D:\NutStoreCode\src\App>dotnet run Created WaitingToRun Task 1 RanToCompletion
注:
任务的状态:
Start 之前为: Created
Start 之后为: WaitingToRun
方式 2:
private static void Main(string[] args) { Task.Run(() => TaskMethod("Task 2")); } private static void TaskMethod(string v) { System.Console.WriteLine(v); }
方式 3:
private static void Main(string[] args) { var t3 = Task.Factory.StartNew(() => TaskMethod("Task 3")); Task.WaitAll(t3); //等待所有任务结束 } private static void TaskMethod(string v) { System.Console.WriteLine(v); }
参考地址 www.donet5.com
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
2022-08-27 pinia 的基本使用 vue3