加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

C#多线程和异步之Task和async/await说明

发布时间:2021-06-03 07:50:07 所属栏目:编程 来源:互联网
导读:一、什么是异步 同步和异步首要用于修饰要领。当一个要领被挪用时,挪用者必要守候该要领执行完毕并返回才气继承执行,我们称这个要领是同步要领;当一个要领被调

同步和异步首要用于修饰要领。当一个要领被挪用时,挪用者必要守候该要领执行完毕并返回才气继承执行,我们称这个要领是同步要领;当一个要领被挪用时当即返回,并获取一个线程执行该要领内部的营业,挪用者不消守候该要领执行完毕,我们称这个要领为异步要领。

异步的甜头在于非阻塞(挪用线程不会停息执行去守候子线程完成),因此我们把一些不必要当纵然勤奋效、较耗时的使命设为异步执行,可以进步措施的运行服从。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(); 

        } 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读