写点什么

WinRT:超越 async 与 await

  • 2012-05-21
  • 本文字数:603 字

    阅读完需:约 2 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

新的 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:381932
用户头像

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

关注

评论

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

最高25k $MPC 资助,Partisia Blockchain 推出全新开发者计划

BlockChain先知

快手自研视频生成大模型「可灵」来啦!

快手技术

大模型 文生视频 可灵

最高25k $MPC 资助,Partisia Blockchain 推出全新开发者计划

股市老人

Java 学习

玄兴梦影

学习 java

蓝易云 - Nginx查找耗时的接口

百度搜索:蓝易云

nginx 云计算 运维 服务器 云服务器

【CVPR2024】面向StableDiffusion的编辑算法FreePromptEditing,提升图像编辑效果

阿里云大数据AI技术

人工智能 深度学习 算法 CVPR 图像编辑

SQL 入门教程:从基础到实践

霍格沃兹测试开发学社

最高25k $MPC 资助,Partisia Blockchain 推出全新开发者计划

长安区块链

Vector | Graph:蚂蚁首个开源Graph RAG框架设计解读

TuGraphAnalytics

知识图谱 tugraph rag DB-GPT OpenSPG

FinalReference 如何使 GC 过程变得拖拖拉拉

bin的技术小屋

JVM java

CompletableFuture 使用指南

FunTester

OpenTiny CCF开源创新大赛赛事指南来啦,助力你赢取10W赛事奖金

OpenTiny社区

Vue 前端 低代码 组件库 OpenTiny

蓝易云 - centos服务器a.sh内如何 在指令中自动加入当前时间?

百度搜索:蓝易云

centos 服务器 云服务器 服务器租用 高防服务器

在 Go 中如何让结构体不可比较?

江湖十年

Go golang golang 面试 编程技巧

数据库管理和开发:Navicat 17 for MongoDB mac 激活版

你的猪会飞吗

Mac软件推荐 mac破解软件下载

深入解析 JMeter TPS 测试:从理论到实践

霍格沃兹测试开发学社

JMeter 响应断言详解:提升测试精度的利器

霍格沃兹测试开发学社

K歌技术大揭秘:从“清唱找调”到“智能修音”,如何让歌声自然飞扬、声动四方?

快手技术

回森 业务创新 智能修音

金融机构如何打击帮信罪和掩饰罪?

芯盾时代

风险管理 反欺诈 账户安全 金融风控

Partisia Blockchain 推出全新开发者计划,最高获 25k $MPC 资助

股市老人

掌握 JMeter 插件管理器:提升性能测试的利器

霍格沃兹测试开发学社

深度解析:基于Pixi渲染引擎打造沉浸式「滑雪竞技」小游戏!

快手技术

前端 H5 快手 pixi 渲染

Navicat for PostgreSQL mac(PostgreSQL 数据库开发工具)v17.0.9版

Mac相关知识分享

Mac软件 数据库开发工具 软件下载

精准控制:Python 输入数值范围限制详解

霍格沃兹测试开发学社

Partisia Blockchain 推出全新开发者计划,最高获得 25k $MPC 资助

石头财经

2024年移动端技术探索

轻口味

android 移动端

蓝易云 - springboot配置静态资源访问

百度搜索:蓝易云

CSS JavaScript Linux Spring Boot 云服务器

攀登不止,华为数据库论文入选SIGMOD 2024,技术创新再谱新篇

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号2024年6月PK榜

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