【ArchSummit】如何通过AIOps推动可量化的业务价值增长和效率提升?>>> 了解详情
写点什么

WinRT:超越 async 与 await

  • 2012-05-21
  • 本文字数:603 字

    阅读完需:约 2 分钟

新的 Windows Runtime(WinRT)的目标之一就是为开发者进行异步编程提供更好的支持。借助于异步操作,程序可以在其他操作(诸如文件 I/O 或是网络通信)尚未结束的情况下保持对用户的响应。这种响应性对于大多数用户应用来说都是很有用的,包括触摸界面,用户在这种情况下希望手势能有快速的反馈。

为了实现这个目的,C#与 Visual Basic 程序员通过“ await/async ”关键字来实现异步操作,同时又不会造成程序控制流的过分复杂。遵循 async API 调用的程序可以依靠编译器在发出调用时自动将上下文切换至原来的状态。近日,来自微软的 Stephen Toub详细解释了该过程的工作原理。

编译器内部重写了标记为async 的方法以通过状态机将其实现出来。当程序员将某条语句标记为“await”,编译器就可以插入标记,通过这些标记,编译器能够知晓可以在何处挂起与继续方法的执行,在这个过程中是不需要用到锁的。

Toub 说到:

在等待某个尚未完成的异步操作时,编译器生成的代码能够确保与该方法相关的所有状态(比如说局部变量等)都会被打包并保存到堆上。接下来,函数返回到调用者,这样其运行的线程就可以做其他事情了。当稍后等待的异步操作完成时,方法的执行又会使用之前保存的状态继续下去。

Toub 又继续介绍了一些场景,程序员会看到比“await”所提供的更为强大的控制。在这种情况下就需要通过“AsTask”方法来为进度报告提供支持或是支持多点继续。

查看英文原文: Going Beyond async and await On WinRT

2012-05-21 10:381898
用户头像

发布了 88 篇内容, 共 258.4 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

华为云邓明昆:云原生时代,以开源赋能数字化转型

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

618夏日“折”学家活动上线!开通表盘会员解锁百变腕间风格

最新动态

四大技巧,教你如何加速手动UI测试

龙智—DevSecOps解决方案

UI测试 用户界面测试

NFTScan | 06.12~06.18 NFT 市场热点汇总

NFT Research

热点 NFT\

龙智携手Atlassian亮相DevOps国际峰会:释放团队潜力,以协作挑战不可能

龙智—DevSecOps解决方案

DevOps ITSM ITSM软件 工作管理

基于双层缓存(DLC)机制解决热点缓存并发重建问题

xfgg

Java' 6 月 优质更文活动

openGemini:顺势而动,蓄势而发

华为云开源

数据库 开源

数字化转型的“整体规划”有多重要?

优秀

低代码 数字化转型 数字化

华为云黄瑾:做强坚实数据底座,GaussDB与产业携手共进

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

大会预告 | 2023云边协同大会将于6月30日在京召开

信通院IOMM数字化转型团队

边缘计算 AIOT 分布式云 云边协同

观点碰撞燃爆会场|2023开放原子全球开源峰会区块链分论坛圆满落幕

开放原子开源基金会

区块链 开源 开放原子全球开源峰会 开放原子

Seata Saga 模式快速入门和最佳实践

阿里巴巴云原生

阿里云 云原生 seata

【零售电商系列】走进亚马逊之三方物流与售后

小诚信驿站

6 月 优质更文活动

【参考设计】2KW AC/DC数字电源方案

元器件秋姐

设计 电路 方案 电源 数字电源

即时通讯技术文集(第17期):社交软件红包技术专题 [共12篇]

JackJiang

网络编程 即时通讯 IM

ModelBox实战开发:RK3568实现摄像头虚拟背景

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 6 月 PK 榜

如何在 Apifox 中正确指定 query 参数?

Apifox

Java 程序员 Apifox API 接口工具

Typora绿化版

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

用简单的描述带你理解运算放大器

矜辰所致

运算放大器 6 月 优质更文活动

GPT-4满分通过MIT本科数学考试!这套提示词火了

Openlab_cosmoplat

算法 ChatGPT

优化开发工作流的三大实用技巧,助力效率提升

龙智—DevSecOps解决方案

版本控制 版本管理

openEuler+Linaro合作成果展示|2023开放原子全球开源峰会

openEuler

Linux 开源 操作系统 openEuler linaro

华为云邓明昆:云原生时代,以开源赋能数字化转型

华为云开源

开源 云原生 数字化

华为云苏光牛:坚持产品能力的升级,做金融数字化的坚实数据底座

华为云开发者联盟

华为云 华为云开发者联盟 企业号 6 月 PK 榜

赋能中国软件,共筑开放生态|2023开放原子全球开源峰会软硬协同开源分论坛成功举办

开放原子开源基金会

开源 开放原子全球开源峰会 开放原子 软硬协同开源

LED透明屏和LED玻璃屏的区别

Dylan

分辨率 视频 图像 屏幕亮度 LED

中国移动云能力中心捐赠 secScanner 和 ksPack 项目,助力openEuler社区繁荣发展

openEuler

Linux 操作系统 openEuler 移动云 开放原子基金会

WinRT:超越async与await_C#_Jeff Martin_InfoQ精选文章