大咖直播-鸿蒙原生开发与智能提效实战!>>> 了解详情
写点什么

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

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

关注

评论

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

叫板-Android-开发!跨平台应用开发神器-Flutter-又添开源插件!-&nbs

android 程序员 移动开发

在这个问题上,能看出 Android 工程师的真实水平

android 程序员 移动开发

史上最详细!那些你不知道的WorkManager流程分析和源码解析

android 程序员 移动开发

基于-Kotlin-+-Netty-实现一个简单的-TCP-自定义协议

android 程序员 移动开发

几年开发两茫茫,且看我给你分析ContentProvider

android 程序员 移动开发

凭你的技术“你能做个淘宝、微信吗?

android 程序员 移动开发

初探 Android 组件化,四个步骤把握组件化核心要领

android 程序员 移动开发

副本 Kubernetes之POD、容器之间的网络通信

android 程序员 移动开发

北漂7年,安全着陆,一位大龄Android程序员的自述

android 程序员 移动开发

历时30天的腾讯Android研发岗面试血泪史!最终拿到offer25K+16薪

android 程序员 移动开发

勤勤恳恳做到30岁,3名百度 ,京东,腾讯的高级Android工程师被辞退了

android 程序员 移动开发

动态加载 so 注意事项&案例

android 程序员 移动开发

Jerry眼中的SAP客户数据模型

汪子熙

CRM SAP abap 11月日更

在小公司混水摸鱼3年,被面试官直接开怼:能力太差了,还不如应届生哇

android 程序员 移动开发

凭借这938页Android面试题合集,拿下了滴滴、美团、携程

android 程序员 移动开发

十年老Android:构建Android-MVVM应用程序只需这几步?

android 程序员 移动开发

可能是目前最全的《Android面试题大全》(中高级)

android 程序员 移动开发

各种风格的Android面试题,进来了解一下?

android 程序员 移动开发

同事逆袭面进阿里P7-年薪60W+,临别留下一张Android开发重点技术路线图---

android 程序员 移动开发

Chrome开发者工具中Elements(元素)断点的用途

汪子熙

JavaScript chrome Chrome开发者工具 11月日更

前端开发:JS中 indexOf() 方法的使用

android 程序员 移动开发

原创_Android Jetpack Compose 最全上手指南

android 程序员 移动开发

使用jMeter构造大量并发HTTP请求进行微服务性能测试

汪子熙

Jmeter HTTP java; 11月日更

图片加载框架-Picasso最详细的使用指南

android 程序员 移动开发

分享十次Android面试经验总结,已收字节,阿里,小米等offer

android 程序员 移动开发

加快APK构建速度,如何一步步把编译时间从130秒降到17秒以内

android 程序员 移动开发

反向编译了子弹短信的 APK,核心功能为整合网易云信 SDK

android 程序员 移动开发

四张图让你玩转Tomcat系统架构!!!

android 程序员 移动开发

无代码Web UI自动化工具Automa初体验

FunTester

chrome 自动化 插件 FunTester Automa

【高并发】深入解析Callable接口

冰河

Java 并发编程 多线程 高并发 异步编程

分分钟带你读懂-ButterKnife-的源码

android 程序员 移动开发

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