写点什么

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

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

关注

评论

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

QCon-OPPO大规模CV预训模型技术及实践

安第斯智能云

算法 计算机视觉 预训练模型

洞态漏洞检出测试第二期:NoSQL & LDAP注入漏洞

火线安全

DevSecOps WEB安全 安全漏洞

青藤:东西向流量占比80%,安全如何有效搞定?

青藤云安全

Java 中 Jackson 的 readTree

HoneyMoose

看了个女装项目(doge

你?

云智慧运维管理平台OMP荣获OSC中国开源项目评选「最受欢迎项目」奖

云智慧AIOps社区

开源项目 运维工程师 运维监控 自动化运维 运维管理

为什么企业组织更愿意选择内部私有的IM,而不使用钉钉、微信等软件?

BeeWorks

在线JSON转YAML工具

入门小站

json

基于STM32设计的计算器(实现基本运算)

DS小龙哥

C语言 嵌入式 单片机

基于STM32设计的数字电子秤

DS小龙哥

C语言 嵌入式 单片机

低代码实现探索(十二)vue.config.js模块打包

零道云-混合式低代码平台

基于STM32设计的健康检测设备(测温心率计步)

DS小龙哥

C语言 嵌入式 单片机

MongoDB高级应用之数据转存与恢复(5)

Tom弹架构

Java 分布式数据库mongodb

2022年石家庄等保测评公司名单(排名部分先后)

行云管家

网络安全 等保 等保测评 石家庄

CRM系统的六大优势

低代码小观

低代码 CRM 客户关系管理 CRM系统 客户关系管理系统

KubeMeet 新年首站成都开放报名!5 场云原生应用交付开源实践

阿里巴巴云原生

阿里云 开源 云原生 KubeMeet 线下活动

Linux之chmod命令

入门小站

Linux

阿里云「低代码音视频工厂」正式上线,为企业用户打造音视频应用开发最短路径

阿里云CloudImagine

音视频 低代码 开发

年度盘点丨2021数字化转型优秀案例TOP10

ToB行业头条

大数据开发之Hive调优技巧

@零度

大数据 hive调优

Mithril.js:一个高性能 JavaScript MVC 框架

devpoint

typescript mvc 1月月更 Mithril.js

项目经理如何有效管理项目进度?项目管理3大常见问题及解决方案

优秀

项目管理 项目管理工具

关于熟经济和通胀--《香帅中国财富报告》摘录(2/100)

hackstoic

经济

谁说操作系统没有创新,这里就有一个,还是分布式的

LAXCUS分布式操作系统

涨薪密码 | 音视频开发-程序员界的技术皇冠

Yt

音视频 WebRTC ffmpeg 流媒体 SRS流媒体服务器

全新UI西游H5决战天宫游戏详细图文架设教程

echeverra

基于STM32设计的指针式电子钟与日历

DS小龙哥

C语言 嵌入式 单片机

基于STM32设计的校园一卡通项目

DS小龙哥

C语言 嵌入式 单片机

采购堡垒机时候,选择开源堡垒机还是云堡垒机?

行云管家

云计算 网络安全 等保 堡垒机

如何修改Kestrel上传文件的大小

喵叔

1月月更

安全架构要参:构建企业适用的安全架构

I

安全架构 企业安全

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