写点什么

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

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

关注

评论

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

人人皆为开发者?不可错过的低代码发展新趋势

云智慧AIOps社区

大前端 低代码 数据可视化

如何以极客的方式探索小程序容器技术

Geek_99967b

SaaS应用 小程序转app 跨端运行

英伟达周锡健:设计到数字营销的最后一公里

阿里云弹性计算

vr XR 视觉计算

Markdown语法简介

工程师日月

markdown语法 5月月更

创业、女性、数字化:后COVID-19世界的复苏“铁三角”

脑极体

第一梯队,增速第一

天翼云开发者社区

在线HTML转YAML工具

入门小站

工具

Apache SeaTunnel(Incubating)与计算引擎的解耦之道,重构API我们做了些什么

Apache SeaTunnel

Apache 大数据 开源 DolphinScheduler workflow

使用 Provider 实现 Flutter 不相关页面状态数据共享

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

使用postMessage对iframe进行跨域数据传输

空城机

iframe postMessage 5月月更

linux之tar使用技巧

入门小站

Linux

天翼云通过DCMM 4级认证

天翼云开发者社区

亚马逊AWS特约评委揭秘FinClip黑客松获胜秘诀

Geek_99967b

SaaS 小程序容器 小程序开发 小程序组件

10分钟,将微信小程序转换成App

Speedoooo

微信小程序 移动开发 小程序容器 小程序转app

天翼云成为“云优化能力提升计划”首批成员单位!

天翼云开发者社区

一起来体验小程序应用的独特魅力

Geek_99967b

SaaS应用 finclip 小程序容器

一文学完Linux常用命令

编程攻略

Linux

天翼云4.0创新成果发布!科技创新赋能安全普惠

天翼云开发者社区

在线火星文转简体中文工具

入门小站

工具

Java Core「3」volatile 关键字

Samson

学习笔记 5月月更 Java core

在KVM中运行苹果操作系统

lyan

前端食堂技术周刊第 38 期:Remix v1.5.0、Babel v7.18.0、前端部署十五章、Tree Shaking 问题排查指南、一文搞懂前端技术发展

童欧巴

前端 Remix 前端部署

在星云科技,我们使用 Zadig 实现多环境并行发布,上千次周部署

Zadig

DevOps 云原生 CI/CD 软件交付

十、云原生网络架构

穿过生命散发芬芳

网络架构 5月月更

我们为什么选择使用分布式持续交付新星 Zadig ?

Zadig

DevOps 云原生 CI/CD 软件交付

Hoo研究院|区块链简报 20220523期

区块链前沿News

#区块链# Hoo 热点

企业引流和留存,“App+小程序”是较优技术策略

Speedoooo

微信小程序 APP开发 小程序容器 小程序转app

分布式协议-Paxos

白裤

PAXOS paxos协议 Basic paxos 5月月更

【刷题第16天】数组中出现次数超过一半的数字

白日梦

5月月更

混合办公首选轻薄本,华为MateBook的“三重变身”改变了什么?

脑极体

微幕小程序,给市场一个新的想象空间

Geek_99967b

小程序容器 小程序开发

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