QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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:382014
用户头像

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

关注

评论

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

数据中台选型必读(四):要想中台建的好,数据模型得做好

雨果

数据中台

中国数据中台未来会怎样?三个趋势预测为您指明方向

雨果

数据中台

无线标准802.11ac 和 802.11ax到底有什么区别?哪个更快?

wljslmz

网络技术 无线技术 802.11ac 802.11AX 11月月更

实战指南 | Serverless 架构下的应用开发

阿里巴巴云原生

阿里云 Serverless 云原生

极客时间运维进阶训练营第三周作业

好吃不贵

2022 vivo开发者大会人工智能专场:打造「1001个便利」

极客天地

WiFi、蓝牙、NFC 哪家强?短距离无线通信技术对比分析

元器件秋姐

无线通信 元器件选型 元器件电商平台 元器件采购

Websocket集群解决方案

Jeremy Lai

websocket 集群 发布订阅模式

官宣!Taier1.3 新版本正式发布,新鲜功能抢先体验

袋鼠云数栈

Docker 镜像使用

我是一个茶壶

Docker 镜像 11月月更

银行APP用户体验外滩峰会即将开启!四大亮点抢先看

易观分析

金融 银行 易观

2022 VDC应用与服务专场:帮助开发者实现增长共赢

极客天地

Redis的一些概念

饱饱巴士

redis 11月月更 redis梳理

【线上分享会回顾】九科信息董事&产品VP傅恺分享流程挖掘实践案例

九科Ninetech

阿里云 Landing Zone 上好云伙伴联盟正式起航

云布道师

阿里云 2022云栖大会

【愚公系列】2022年11月 微信小程序-app.json配置属性之window

愚公搬代码

11月月更

袋鼠云产品功能更新报告 02 期丨有亿点点走心!

袋鼠云数栈

解决APP抓包问题【网络安全】

网络安全学海

网络安全 安全 信息安全 渗透测试 漏洞挖掘

MUI实战之switch和事件以及transparentBar与slide的实战与深入运用

恒山其若陋兮

前端 11月月更 黎燃

远程控制软件如何像素级还原设计稿色彩?

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

2022 VDC安全隐私专场:提升用户产品安全体验,携手伙伴共建安全新生态

极客天地

Knative架构解析

穿过生命散发芬芳

Knative 11月月更

三分钟带你了解一站式大数据平台运维管家 ChengYing 产品包制作

袋鼠云数栈

Docker容器的使用

我是一个茶壶

容器 11月月更 docker、

商家和企业如何选择KOC合作:要明确推广目标、选对平台和博主

石头IT视角

2022-11微软漏洞通告

火绒安全

安全漏洞

非行稳无以致远:华为如何写好数字金融的大文章?

脑极体

MUI框架之移动端前端开发对dialog与button轮播的深入运用与实战

恒山其若陋兮

Vue 前端 11月月更

【kafka运维】 kafka-consumer-groups.sh消费者组管理

石臻臻的杂货铺

kafka kafka运维 11月月更

对于MUI的实现原理以及遮罩蒙版和numbox以及侧滑导航的事件监听的运用和实战

恒山其若陋兮

Vue 前端 11月月更

时延测评|免费又好用的低延时远程控制软件竟是它!

RayLink远程工具

远程控制软件 远程办公软件 远控软件 远程桌面连接 RayLink

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