写点什么

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

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

关注

评论

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

Spring Boot 实战(11)整合MyBatis-Plus

Java 程序员 后端

Spring Boot 快速入门(一)

Java 程序员 后端

Spring Boot在微服务中的最佳实践

Java 程序员 后端

Spring Cloud 2020 版本最佳实践,你落伍了

Java 程序员 后端

来,带你一次性搞懂数据分析和数据挖掘!

博文视点Broadview

Spring Boot + EasyExcel 导入导出,好用到爆!

Java 程序员 后端

Vue进阶(幺柒伍):色彩搭配

No Silver Bullet

Vue 11月日更

Spring Cloud Gateway修改请求和响应body的内容

Java 程序员 后端

Spring--基于AOP实现事务控制

Java 程序员 后端

Spring @Lookup实现单例bean依赖注入原型bean

Java 程序员 后端

Spring Boot 集成 Elasticsearch 实战

Java 程序员 后端

Spring Boot 操作 Redis 的各种实现

Java 程序员 后端

Go WebSocket开发与测试实践【/net/websocket】

FunTester

Java websocket 接口测试 Go 语言 FunTester

Spring Boot 接入 GitHub 第三方登录,只要两行配置!

Java 程序员 后端

Spring Boot 核心的 25 个注解

Java 程序员 后端

Spring Boot+Mybatis+thymeleaf整合

Java 程序员 后端

Spring Cloud:第二章:eureka服务发现

Java 程序员 后端

fastposter 2.2.0 新版本发布 电商级海报生成器

物有本末

Java Vue 海报 fastposter 海报生成器

Spring MVC框架:第七章:REST架构风格(1)

Java 程序员 后端

Spring(一):容器的实现——两大核心类

Java 程序员 后端

Spring boot —— 创建parent工程

Java 程序员 后端

【LeetCode】合并两个有序数组Java题解

Albert

算法 LeetCode 11月日更

外包学生管理系统详细架构设计文档

Beyond Ryan

Spring Cloud Gateway限流实战

Java 程序员 后端

Spring 三级缓存和循环依赖 思考和总结

Java 程序员 后端

Spring+SpringMVC+Mybatis框架整合(SSM整合)

Java 程序员 后端

Spring Boot 中三种跨域场景总结,这篇必看!不看后悔系列

Java 程序员 后端

Spring MVC框架:第七章:REST架构风格

Java 程序员 后端

Spring MVC框架:第六章:传统增删改查

Java 程序员 后端

Spring MVC温故而知新 – 从零开始

Java 程序员 后端

spring boot 自定义配置文件&参数绑定

Java 程序员 后端

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