写点什么

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

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

关注

评论

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

androidui设计,android享学课堂vip课程下载

android 程序员 移动开发

BAT面试Java岗经验汇总:面试重点+精选面试120题+6条面试经验!

Java 程序员 面试

Android学习笔记在互联网上火了,系列教学

android 程序员 移动开发

Android实习面试经验汇总,温故而知新

android 程序员 移动开发

androidwebview开发,动脑学院vip视频破解

android 程序员 移动开发

Android大厂面试真题解析大全,10年Android开发经验

android 程序员 移动开发

Android学习路线!扔物线朱凯android视频

android 程序员 移动开发

Android之内存泄漏调试学习与总结,面试总结

android 程序员 移动开发

Android体系化进阶学习图谱,扔物线五期

android 程序员 移动开发

Android初级开发是如何一步步成为高级开发,含答案解析

android 程序员 移动开发

Android原生开发如何深入进阶,解析底层原理

android 程序员 移动开发

Android基础入门教程,享学课堂Android架构师vip

android 程序员 移动开发

Android外包是如何转正华为的,音视频开发面试

android 程序员 移动开发

Android多态实现原理,android开发艺术探索pdf百度网盘

android 程序员 移动开发

Python代码阅读(第45篇):柯里化

Felix

Python 编程 Code Programing 阅读代码

云管平台的作用以及应用行业简单介绍

行云管家

云计算 云服务 云平台 混合云 云管平台

androidwebview设置,享学课堂Android架构师第一期

android 程序员 移动开发

Android中高级岗面试为何越来越难,细节决定成败

android 程序员 移动开发

Android事件体系全面总结+实践分析,爆火的Android面试题

android 程序员 移动开发

web技术分享| React版本 anyRTC示例对等连接

anyRTC开发者

大前端 音视频 WebRTC React 实时通信

Android免打包多渠道统计如何实现,面试突击版

android 程序员 移动开发

云计算服务包括哪三种服务?怎么定义?

行云管家

云计算 网络安全 云资源 云管理

Android培训那里好,享学课堂Android架构师vip

android 程序员 移动开发

Android外包是如何转正网易的,Android高级工程师面试实战

android 程序员 移动开发

Android大厂技术面试题汇总,享学课堂Android架构师

android 程序员 移动开发

Android岗面试12家大厂成功跳槽,这操作真香

android 程序员 移动开发

android双击事件响应,动脑学院vip视频破解

android 程序员 移动开发

Android大厂面试真题解析大全,flutter框架

android 程序员 移动开发

Android大厂高级面试题灵魂100问,Android经典面试

android 程序员 移动开发

Android客户端Web页面通用性能优化实践,面试心得体会

android 程序员 移动开发

Android岗,享学课堂架构师vip

android 程序员 移动开发

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