【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

关注

评论

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

持续集成实践系列 」Jenkins 构建 CI 自动化流水线常见技巧 (二)

狂师

持续集成 jenkins jenkins-plugin CI/CD

2020年5月北京BGP机房网络质量评测报告

博睿数据

网络 服务器 存储 机房 主机

LeetCode 1339. Maximum Product of Splitted Binary Tree

隔壁小王

算法

ARTS-Week 01

chasel

读《平凡的世界》

YoungZY

读书

从技术思维角度聊一聊『程序员』摆地摊的正确姿势

牧码哥

随笔杂谈 技术人生 经验分享

大话设计模式 | 1 简单工厂模式

Puran

C# 设计模式 PlantUML

Elasticsearch-Base

子路无倦

elasticsearch search 搜索

cpu分析利器 — async-profiler

捉虫大师

Java cpu profiler

createRef、useRef、useMemo对比分析和应用场景

费马

React Hooks useRef useMemo createRef

C#和TS的范型实例化

猫定谔的靴

C# typescript 泛型

ARTS打卡-02

Geek_yansheng25

PlantUML 的介绍和使用

Puran

UML PlantUML

Java技术奇迹

ATGU:阿宝哥

分布式系统技术:存储之数据库

奈学教育

分布式

9种 分布式ID生成方案,我替你整理好了

程序员小富

Java MySQL 分布式

为什么你在群里的提的技术问题没人回答?

古时的风筝

程序员 提问的艺术

《龙教授私享会职场沟通心法》最佳学习路线(2020最新版)

ATGU:阿宝哥

Dubbo Cluster集群那点你不知道的事。

why技术

源码 面试 dubbo 集群容错

程序员未来会成为非常内卷的职业?

非著名程序员

程序员 程序人生 职业 职业规划

如何辨别有发展潜力的员工​

Neco.W

工作 招聘

面试官为什么喜欢拿 Kafka 考验求职者

奈学教育

kafka

从SDL到DevSecOps:始终贯穿开发生命周期的安全

Fooying

DevOps SDL DevSecOps 安全开发 软件开发生命周期

27岁了,程序员写给自己的一封信

学习Java的小姐姐

程序员 生活 总结 程序媛 职场回顾

硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题

小林coding

面试 TCP 网络安全 网络编程 计算机网络

厉害了,SpaceX-API 开源了

非著名程序员

GitHub 开源 程序员

《Oracle Java SE编程自学与面试指南》最佳学习路线图(2020最新版)

ATGU:阿宝哥

前端开发必备工具箱

LeanCloud

CSS 性能优化 vscode 大前端 工具

关于Synchronized锁升级,你该了解这些

学习Java的小姐姐

并发编程 synchronized 轻量级锁 偏向锁 重量级锁

存储让“想象”势不可挡

焱融科技

实时更新:计算机编程语言排行榜—TIOBE世界编程语言排行榜(2020年6月份最新版)

ATGU:阿宝哥

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