C#多线程和异步之Task和async/await分析
同步和异步首要用于修饰要领。当一个要领被挪用时,挪用者必要守候该要领执行完毕并返回才气继承执行,我们称这个要领是同步要领;当一个要领被挪用时当即返回,并获取一个线程执行该要领内部的营业,挪用者不消守候该要领执行完毕,我们称这个要领为异步要领。 异步的甜头在于非阻塞(挪用线程不会停息执行去守候子线程完成),因此我们把一些不必要当纵然勤奋效、较耗时的使命设为异步执行,可以进步措施的运行服从。net4.0在ThreadPool的基本上推出了Task类,微软积极保举行使Task来执行异步使命,此刻C#类库中的异步要领根基都用到了Task;net5.0推出了async/await,让异步编程更为利便。本篇首要先容Task、async/await相干的内容,其他异步操纵的方法会在下一篇先容。 二、Task先容 Task是在ThreadPool的基本上推出的,我们简朴相识下ThreadPool。ThreadPool中有多少数目的线程,假若有使命必要处理赏罚时,会从线程池中获取一个空闲的线程来执利用命,使命执行完毕后线程不会烧毁,而是被线程池接纳以供后续使命行使。当线程池中全部的线程都在繁忙时,又有新使命要处理赏罚时,线程池才会新建一个线程来处理赏罚该使命,假如线程数目到达配置的最大值,使命会列队,守候其他使命开释线程后再执行。线程池能镌汰线程的建设,节减开销,看一个ThreadPool的栗子吧 static void Main(string[] args) { for (int i = 1; i <=10; i++) { //ThreadPool执利用命 ThreadPool.QueueUserWorkItem(new WaitCallback((obj) => { Console.WriteLine($"第{obj}个执利用命"); }),i); } Console.ReadKey(); } (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |