Task怎么提高异步执行效率
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,本篇内容介绍了"Task怎么提高异步执行效率"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!async
千家信息网最后更新 2025年01月18日Task怎么提高异步执行效率
本篇内容介绍了"Task怎么提高异步执行效率"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
async Task 语法糖出来后,异步编程变得非常简单,适合需要耗费较长时间的任务。
有些小伙伴使用后可能会非常疑惑,使用异步和同步,在耗时上几乎没有差别。
下面我们看一个例子,场景是需要调用多个第三方的WebApi,分别是获取名称、年龄、性别,由于网络环境等原因,api响应时间可能会接近1秒
public async Task Test(){ var sw = new Stopwatch(); sw.Start(); var userName = await GetUserNameAsync(); var userAge = await GetUserAgeAsync(); var userSex = await GetUserSexAsync(); sw.Stop(); var ts = sw.Elapsed; Console.WriteLine($"总共耗时:{ts.TotalMilliseconds}ms");}private async TaskGetUserNameAsync(){ await Task.Delay(500); return "小明";}private async Task GetUserAgeAsync(){ await Task.Delay(800); return "11";}private async Task GetUserSexAsync(){ await Task.Delay(900); return "11";}
运行后发现,这个时间2秒多,这用户体验肯定是无法忍受的
导致这样结果的原因是每次进行异步调用的时候,都在异步函数前加上了 await ,对于单单这个过程来说,其实相当于同步,等待直到结果返回,每个异步函数都await,时间自然就叠加了,为了解决这个问题,使用一个小技巧,可以将代码改成下面这样
public async Task Test(){ var sw = new Stopwatch(); sw.Start(); var userNameTask = GetUserNameAsync(); var userAgeTask = GetUserAgeAsync(); var userSexTask = GetUserSexAsync(); var userName = await userNameTask; var userAge = await userAgeTask; var userSex = await userSexTask; sw.Stop(); var ts = sw.Elapsed; Console.WriteLine($"总共耗时:{ts.TotalMilliseconds}ms");}private async TaskGetUserNameAsync(){ await Task.Delay(500); return "小明";}private async Task GetUserAgeAsync(){ await Task.Delay(800); return "11";}private async Task GetUserSexAsync(){ await Task.Delay(900); return "11";}
这次运行的总耗时,就是3个异步中,耗时最长那个GetUserSexAsync
为什么会这样呢,这个小技巧的关键是这里,当执行到异步函数的时候,不加 await,不进行等待,让这些任务乖乖在别的线程的执行,当需要用到他们的时候,再去等待返回值,所以时间上不会进行叠加,哪个最长,总耗时就是哪个
var userNameTask = GetUserNameAsync();var userAgeTask = GetUserAgeAsync();var userSexTask = GetUserSexAsync();var userName = await userNameTask;var userAge = await userAgeTask;var userSex = await userSexTask;
"Task怎么提高异步执行效率"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!
时间
函数
时候
效率
最长
任务
内容
原因
就是
技巧
更多
知识
结果
过程
小明
叠加
同步
运行
实用
学有所成
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
10亿人游戏服务器
七日杀Linux服务器内存
无机化学答案软件开发
c语言数据库开发
服务器dell新的怎么访问
国产服务器linux
计算机网络安全的学法
东莞网络安全教育视频
上海ios软件开发项目
网络技术应用方案
东方通科技股份有限公司网络安全
福鼎租房软件开发
盘锦节能软件开发多少钱
胸痛中心数据库填报ppt
品牌半身裙数据库
计算机网络技术实例
工作总结2021网络安全
逆水寒官方新服务器
微服务前后台数据库同步
js调用服务器方法
数据库审计产品有什么好处
软件开发工程师的发展前景
玩cf为啥一直服务器断开连接
数据库防护安全吗
sql数据库 日期类型
数据库语言类型
模块5网络技术与信息安全
大学学生网络安全的总结
河北大学网络安全活动
咸宁管理软件开发费用