首页 > 其他分享 >关于NET异步的理解

关于NET异步的理解

时间:2023-01-09 07:11:06浏览次数:37  
标签:异步 Task await 关键字 理解 线程 NET method

1、包含async、await关键字及Task相关方法,async和await必须成对使用(Task无强制要求)。

2、异步是为了解决执行耗时操作所导致的线程阻塞。

3、当在你的method中调用NET提供的aysnc方法(或你自己写的aysnc方法)时,await关键字将线程归还到线程池,并跳出你的method,继续执行上级代码块,直到异步方法执行结束后,才会继续执行你method中的后续逻辑。这样就避免了你的method阻塞上级代码块的执行。

4、异步并不等于多线程。因为经测试,有时异步方法的线程与主线程是同样的id。

5、建议定义method返回值时使用Task关键字(比如Task<string>),await关键字能将aysnc方法的返回值自动与Task对应,就不需要我们在代码中包装返回值类型了。

6、async和await虽能避免阻塞,但会造成性能的开销,用时需权衡。

7、Task类能辅助异步相关功能,比如强制退出异步操作(CancellationToken)、休眠(Task.Delay)等。尽量用Task类替代Thread类,比如Task.Delay替代Thread.Sleep。

8、编写restful风格api时,返回值尽量使用Task关键字。

 

标签:异步,Task,await,关键字,理解,线程,NET,method
From: https://www.cnblogs.com/tudou365/p/17035943.html

相关文章

  • 一个专注推荐.Net开源项目的榜单
    大家好,我是编程乐趣,从7月份开始推荐开源项目,已经推荐了接近100个开源项目了,其中绝大部分是有关.Net的开源项目,也受到大家非常多人的喜欢。由于公众号不方便查询,很多人又想......
  • React Hooks的理解,React Hooks有哪些,解决了什么问题
    一、是什么Hook 是React16.8的新增特性。它可以让你在不编写 class 的情况下使用 state 以及其他的 React 特性至于为什么引入hook,官方给出的动机是解决长......
  • 异步编程的历史演进
    或许你也听说了,摩尔定律失效了。技术的发展不会永远是指数上升,当芯片的集成度越来越高,高到1平方毫米能集成几亿个晶体管时,也就是人们常说的几纳米工艺,我们的半导体行业就......
  • log4net 文件名重叠解决办法
    此为多线程写日志造成解决办法,在appender节点里添加:<paramname="lockingModel"type="log4net.Appender.FileAppender+MinimalLock"/>完整XML示例:<log4net>......
  • Flutter 陈航 23-事件循环 Event Loop 异步 线程 Isolate
    本文地址目录目录目录23|单线程模型怎么保证UI运行流畅?EventLoop事件循环模型微任务队列异步任务Future简单案例官方综合案例改造后的案例异步函数同步等待await不......
  • Net Core 微服务 - 如何在docker容器里运行一个简单的.net core web api 服务
    原文网址:https://www.cnblogs.com/SF8588/p/15380776.html微服务k8s参考1.新建一个WebApi项目默认的webapi项目包含一个默认的api:/weatherforecast    2.新建......
  • 深入剖析 Kubernetes-5 容器网络
    深入剖析Kubernetes-5容器网络1浅谈容器网络1.1VethPair与Docker网桥容器要想跟外界进行通信,它发出的IP包就必须从它的NetworkNamespace里出来,来到宿主机上。......
  • Physics.SphereCast理解
    测试代码publicclassCollisionTest:MonoBehaviour{voidUpdate(){if(Input.GetMouseButtonDown(0)){if(Physics.Sphe......
  • SpringBoot——异步开发之异步调用
    何为异步调用说异步调用前,我们说说它对应的同步调用。通常开发过程中,一般上我们都是同步调用,即:程序按定义的顺序依次执行的过程,每一行代码执行过程必须等待上一行代码执行......
  • SpringBoot——异步开发之异步请求
    何为异步请求在Servlet3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理。如果一个请求需要进行IO操作,比如访问数据......