写点什么

C#的未来:异步序列

  • 2015-05-06
  • 本文字数:713 字

    阅读完需:约 2 分钟

C#中的 async/await 语法已经得到了开发者们的广泛接受,但现在开发者们提出了新的要求。他们希望能够通过一种类似于“yield return”的语法从异步函数中返回多个值。在关于 C# 7 的一条新的提议中,这一功能被称为“异步序列”。

这条提议的提出者希望能够使用以下两种模式:

  • IObservable,这是 Reactive Extensions(Rx)的基础,后来成为了.NET 4.0 中的一部分
  • IAsyncEnumerable,这是由 Interactive Extensions(IX)项目所引入的类型,也用于 Entity Framework 7 中。

定义生产者

HaloFour 写道:

从一个序列的生产者的角度来看,这两种模式的 yield return 行为将有一些细微的差别。IObservable可能会立即继续执行,而 IAsyncEnumerable会等到下一次调用 MoveNext() 方法时才会继续执行。

对于 push 模型来说,使用 Observable.Create 方法就足够了,这点已经基本为开发者所接受。而基于 IAsyncEnumerable的 pull 模型实现起来就要麻烦许多。因此,这种时刻某种异步版本的迭代函数以及“yield return”语句就能够大显身手了。

定义消费者

HaloFour 继续写道:

从消费者的角度来说,这两种模式的行为应当是相同的。Observable.ForEach 允许并发执行某些操作,而我认为允许 foreach 方法体运行多个并发线程的方式是非常不直观的(假设派发这些线程时没有使用 SynchronizationContext)。如果它的实现类似于 await 的工作方式,那么可以让某种中间代码(例如 SequenceAwaiter)处理从某个 IObservable获得结果缓冲的细节,或者使用某个扩展方法直接将其转型为 IAsyncEnumerable

关于这个语法还没有提供任何示例,但估计它看起来应该类似于这样:

await foreach (var item in AsyncSource)

查看英文原文: C# Futures: Asynchronous Sequences

2015-05-06 08:361937
用户头像

发布了 428 篇内容, 共 190.6 次阅读, 收获喜欢 39 次。

关注

评论

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

狂飙 50 倍丨TiDB DDL 框架优化深度解析

PingCAP

数据库 TiDB

MiniMax TTS新模型T2A-01-HD:情感控制10秒克隆限时免费;真人表演+文本命令,Kinetix精准生成角色动作

声网

探索微店商品详情API接口:解锁高效电商管理的关键工具

代码忍者

微店商品详情API接口

TiDB 助力广发银行零售信贷业务管理平台成功上线

PingCAP

数据库 TiDB

TinyEngine v2.1版本发布:全新的区块方案和画布通信方案,打造更强力的可拓展低代码引擎

OpenTiny社区

开源 前端 低代码 OpenTiny

云消息队列 Kafka 版 V3 系列荣获信通院“云原生技术创新标杆案例”

阿里巴巴云原生

kafka 阿里云 云原生

AI商品计划管理系统:时尚品牌数字化转型的秘密武器

第七在线

好用的文件对比工具Beyond Compare 5 for Mac

小玖_苹果Mac软件

BetterTouchTool For Mac 鼠标触控板增强软件

小玖_苹果Mac软件

阿里巴巴API接口对电商的影响与收益

科普小能手

数据挖掘 阿里巴巴 数据分析 电商 API 接口

数禾科技:资源成本降低 50%!用 TiDB 实现技术栈简化的实践和收益

PingCAP

数据库 TiDB

TiDB 的高可用实践:一文了解代理组件 TiProxy 的原理与应用

PingCAP

数据库 TiDB

5 分钟复刻你的声音,一键实现 GPT-Sovits 模型部署

阿里巴巴云原生

阿里云 云原生

你需要什么样的资源隔离?丨TiDB 资源隔离最佳实践

PingCAP

数据库 TiDB

唐刘:TiDB 的 2024 - Cloud、SaaS 与 AI

PingCAP

数据库 TiDB

开放下载|Aloudata《主动元数据,DataOps 建设新支点》白皮书出炉

Aloudata

元数据 DataOps 数据血缘

黄东旭:2025 数据库技术展望

PingCAP

数据库 TiDB

和鲸科技受邀出席 2024(第四届)“风电领跑者”技术创新论坛

ModelWhale

人工智能 大数据 AI 风电

C#的未来:异步序列_C#_Jonathan Allen_InfoQ精选文章