写点什么

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

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

关注

评论

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

NFTScan 正式上线 Scroll NFTScan 浏览器和 NFT API 数据服务

NFT Research

NFT NFTScan nft工具

倒计时 2 天!本周六,Apache Doris 年度技术盛会相约北京!

SelectDB

数据库 大数据 数据仓库 实时数仓 apache doris

区块链支持物联网的4种方式

BSN研习社

大模型训练-实战的模型、算力与数据训练

百度开发者中心

人工智能 大模型训练

千帆大模型平台引领Falcon-180B适配创新

百度开发者中心

人工智能 Prompt 千帆大模型平台

云图说|交换数据空间Exchange Data Space

华为云开发者联盟

数据交换 开发 华为云 华为云开发者联盟

平台工程动态 Monthly News 2023-9

杨振涛

DevOps 云原生 开发者体验 内部开发者平台 平台工程,

最新开源、更擅长推理的中文大模型

百度开发者中心

人工智能 大模型

将 Amazon EC2 到 Amazon S3 的数据传输推向100Gbps 线速

亚马逊云科技 (Amazon Web Services)

S3 Amazon EC2 亚马逊云科技

《永劫无间》新版本上线,英特尔锐炫及XeSS即时支持,助力玩家丝滑畅游!

E科讯

2个数仓中不等值关联优化案例

华为云开发者联盟

数据库 后端 华为云 数仓 华为云开发者联盟

什么是智慧光伏?智慧光伏电站运维平台

2D3D前端可视化开发

物联网 数字孪生 三维可视化 智慧光伏 智慧电站

博睿数据 Bonree ONE 秋季产品发布会,即将震撼启幕!

博睿数据

可观测性 博睿数据 智能化平台

IDO官网预售 创建 ICO 解决方案:为您的代币发行奠定基础

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

当AI遇上3D建模:一场创意与技术的完美碰撞!

Finovy Cloud

AI 3D

文末福利免费送 | KaiwuDB AI 时代数据库技术专题沙龙,名额仅剩 20 位,报名从速!

KaiwuDB

数据库 KaiwuDB

熟练使用 Redis 的五大数据结构:Java 实战教程

互联网工科生

Java redis

云端聚首,造炬成阳 | 瑞技荣获思科云CCC合作伙伴授牌

Bytebridge

语音识别技术中的实时处理与云计算

数据堂

语音识别技术在智能家居中的应用与挑战

数据堂

红楼梦人物关系图怎么画?超详细的人物关系图绘制教程来了。

彭宏豪95

阅读 在线白板 办公软件 绘图软件 绘图工具

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