首页 > 编程语言 >[个人笔记][C#]异步调用控制流的一些测试结论

[个人笔记][C#]异步调用控制流的一些测试结论

时间:2023-09-07 14:23:05浏览次数:45  
标签:异步 await C# 控制流 调用 task 线程 执行

  • await调用逻辑总结如下:
    • 调用线程A执行到await时,在await处返回并继续执行调用点后面的代码,await处新开一个线程B执行task
    • 线程B执行完task后继续执行await后面的代码
    • 如果再次遇到await,线程B在await处返回,新开一个线程C执行task
    • 线程C执行完task后继续执行await后面的代码
    • "新开一个线程"是指向线程池申请一个线程,至于是否重用线程还是创建全新线程取决于线程池的调度
  • 如果主函数是异步方法,在主函数写await的话,在await处主线程会结束并回到线程池,await完成之后可能会是另一个线程来执行主函数的后续部分,也就和上面的逻辑保持一致了,主线程并不特殊,只是一个线程池线程而已
  • 如果用task.Result的话,该线程会阻塞等待执行结果,不会回到线程池

标签:异步,await,C#,控制流,调用,task,线程,执行
From: https://www.cnblogs.com/m1ds/p/17684743.html

相关文章

  • 米联客ZYNQ MLK-F6-CZ05-7015 开发平台硬件手册
    1整体概述米联客ZYNQ系列开发平台和核心模块经过多次迭代升级,在工业自动化、水利电力控制设备、医疗图像设备等领域广泛应用,产品性能接受了广大客户的检验,稳定可靠。2021年因芯片普遍紧缺涨价,核心模块再次升级以确保供货稳定和降低用户的使用成本。2硬件参数概述 MLK-F......
  • 杰哥教你面试之一百问系列:java中高级多线程concurrent的使用
    目录问题1:什么是ConcurrentHashMap?它与HashMap的区别是什么?问题2:什么是CopyOnWriteArrayList?它适用于什么样的场景?问题3:什么是BlockingQueue?它的作用是什么?举例说明一个使用场景。问题4:什么是Semaphore?它如何控制并发访问?问题5:什么是CountDownLatch?它适用于什么场景?问题6:什么是Cyc......
  • 闭包-closure
    1.闭包Closure:有权访问另一个函数作用域中变量的函数。包含被引用变量(函数)的对象。2.闭包的产生:当一个嵌套的内部函数引用了外部函数的变量时,就产生了闭包。2-1.闭包产生的条件:①函数嵌套。②内部函数引用了外部函数的数据(变量/函数)。3.常见的闭包:3-1.将......
  • 直播平台搭建,Scheduler 动态定时任务
     直播平台搭建,Scheduler动态定时任务 /** *定时任务管理类 *  *@author * */publicclassQuartzManager{ staticLoggerlogger=Logger.getLogger("QuartzManager");//创建一个SchedulerFactory工厂实例privatestaticSchedulerFactorygSchedulerFactory=......
  • C#List导出Excel
    1.导入NPOI2.引用如下内容usingNPOI.XSSF.UserModel;usingNPOI.SS.UserModel;usingNPOI.HSSF.UserModel;usingSystem.IO;3.List数据1).如果是Json类型数据从前台传递到后台,用如下方式获取前台数据;注:数据类是自定义的类;Key是前台传到后台的键名List<数据类>list=  ......
  • 奇妙的paramsPrepareParamsStack——Struts2中ModelDriven问题
    每次调用全文检索都要传入所有的参数值,不然导致当某个参数没有传值的时候但取到的却是上一次搜索提供的参数值。最后才发现原来是Action类里implementsModelDriven实现的原因:publicclassDocuIndexActionextendsBaseActionimplementsModelDriven{DocSearchParamdocSearchPa......
  • 下拉列表select动态初始化 (JSP页面)
    HTML代码:<td><selectid="as_occt"name="as_occt"><optionselected="selected"value="">智能模糊搜索</option><optionvalue="content">仅搜索内容</option><o......
  • sqlserver移植为Oracle笔记(更新,新增字段名;批量新增记录;日期查询;截取字串函数)
    下面是这两天在项目要sqlserver和oracle兼容的改造中测试出来的笔记:--sqlserver--更改主键字段名'ID'为'ID_'sp_rename  'tb_doc_cat_statistic.ID','ID_','column'--新增字段cat_codealtertabletb_doc_cat_statisticaddcat_codevarchar(100) --oracle--......
  • 【Redis】Could not create server TCP listening socket __6379_ bind_ 在一个非套接
    问题描述:安装Redis,redis-server无法启动,报错。[34420]20Aug21:43:21.110#oO0OoO0OoO0OoRedisisstartingoO0OoO0OoO0Oo[34420]20Aug21:43:21.110#Redisversion=5.0.14.1,bits=64,commit=ec77f72d,modified=0,pid=34420,juststarted[34420]20Aug21:43:21.1......
  • 深度合作SONiC社区,“一站式”SONiC网络解决方案赋能千行百业
    近日,星融元(asterfusion.com)正式加入成为Linux基金会下的SONiC社区会员单位成员,未来星融元将继续与SONiC社区深度合作,为人工智能、云、企业数据中心和园区接入打造一个开放、可扩展和可编程的网络架构。星融元是中国最早参与SONiC社区并积极向社区贡献缺陷修复和软件特性代码的公......