10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

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

关注

评论

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

一文搞定Vue面试

bb_xiaxia1998

Vue

Mac部署hadoop3(伪分布式)

程序员欣宸

大数据 hadoop 11月月更

深度探讨react-hooks实现原理

xiaofeng

React

vue—render函数

格斗家不爱在外太空沉思

vue.js Vue 11月月更

深度剖析React懒加载原理

xiaofeng

React

深入分析React-Scheduler原理

xiaofeng

React

vue的几个提效技巧

yyds2026

Vue

前端面试指南之React篇(二)

beifeng1996

React

new Vue的时候到底做了什么

bb_xiaxia1998

Vue

合格vue开发者应该知道的面试题

bb_xiaxia1998

Vue

百度前端二面常考手写面试题总结

helloworld1024fd

JavaScript

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

经常被问到的react-router实现原理详解

夏天的味道123

React

一文读懂加密资产板块的盈利潜力与投资机会

西柚子

Laravel-文件上传下载

格斗家不爱在外太空沉思

php laravel 11月月更

React源码分析1-jsx转换及React.createElement

goClient1992

React

细说react源码中的合成事件

flyzz177

React

深入react源码看setState究竟做了什么?

flyzz177

React

从源码角度看React-Hydrate原理

flyzz177

React

前端经常遇到的手写js题

helloworld1024fd

JavaScript

详细解读 React useCallback & useMemo

夏天的味道123

React

决策树-交叉验证

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

React循环DOM时为什么需要添加key

beifeng1996

React

华为云从入门到实战 | 云关系数据库备份、恢复及存储容灾服务

TiAmo

华为 华为云 11月月更

React源码分析(二)渲染机制

goClient1992

React

深度讲解React Props

夏天的味道123

React

前端面试指南之React篇(一)

beifeng1996

React

vue实战中的一些小技巧

yyds2026

Vue

React源码分析(三):useState,useReducer

goClient1992

React

Vue的computed和watch的区别是什么?

bb_xiaxia1998

Vue

js函数柯里化-面试手写版

helloworld1024fd

JavaScript

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