OceaBase开发者大会落地上海!4月20日共同探索数据库前沿趋势!报名戳 了解详情
写点什么

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

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

关注

评论

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

时序数据库 TDengine + 高级分析软件 Seeq,助力企业挖掘时序数据潜力

TDengine

tdengine 时序数据库

英特尔锐炫GPU助力AI向大众用户市场普及

E科讯

在AI时代,提升程序员竞争力的关键策略

不在线第一只蜗牛

人工智能 编程 程序员 AI

紧密合作三周年,Elastic颁发腾讯云2022年杰出开源贡献奖

腾讯云大数据

ES

云图说|华为云主机安全新版本上线

华为云开发者联盟

华为云 华为云开发者联盟 华为云云图说

Docker 和 Kubernetes:技术相同和不同之处

EquatorCoco

Docker k8s K8s 多集群管理 kubernetes 运维

流程图怎么画?3个好用的在线流程图软件推荐,绘图再也没烦恼!

彭宏豪95

可视化 流程图 在线白板 画图工具 流程图绘制

2023年必试的7款软件项目管理系统

PingCode

项目管理 项目管理软件 项目软件管理系统

为什么 Amazon Bedrock 中的模型只有部分可用?

花花

亚马逊云科技

全域全自主建设,亚信科技AntDB数据库助力广电5G业务上线运行

亚信AntDB数据库

数据库 AntDB AntDB数据库

特权账号管理之定期改密篇

尚思卓越

网络安全 定期改密

公司让我开发一个管理系统,有了它,So easy!

互联网工科生

软件开发 低代码 快速开发 JNPF

足球盘口数据获取:API接口与数据采集的权衡之道

软件开发-梦幻运营部

2023年前端流行的新技术

树上有只程序猿

前端 前端技术

文心一言 VS 讯飞星火 VS chatgpt (134)-- 算法导论11.2 6题

福大大架构师每日一题

福大大架构师每日一题

RestCloud AppLink已支持的数据源有哪些?

RestCloud

零代码 APPlink 自动化集成

聚势启新,KaiwuDB 生态联盟沙龙首站落地长春

KaiwuDB

正式开源!网易有道上线“易魔声”语音合成引擎

有道技术团队

人工智能 语音合成 TTS

「我在淘天做技术」假如你五行属商家,如何算好账?

阿里技术

财务 算好账 财务开发

数据结构与算法 | 记忆化搜索(Memorize Search)

不在线第一只蜗牛

数据结构 算法 数据

Layer 2 真的为以太坊扩容了吗?

Footprint Analytics

以太坊 Layer 2

同济 MBA × 和鲸:聚焦商业数据思维培养,赋能工管人才转型升级

ModelWhale

人才培养 企业数字化转型 数智化 MBA 同济大学

常见光模块的封装类型有哪些?

小魏写代码

Kubernetes Operator可以做什么?

高端章鱼哥

kubernetes 运维

重磅!天翼云发布一站式智算服务平台“慧聚”

天翼云开发者社区

人工智能 云计算 云服务 云平台

VPC终端节点的实现架构和原理

天翼云开发者社区

VPC终端节点

探索向量数据库 | 重新定义数据存储与分析

-亦世凡华、

数据库 亚马逊云科技 向量数据库

Util应用框架基础(六)- 日志记录 - Exceptionless

何镇汐

开源 后端 软件开发

在HarmonyOS上实现ArkTS与H5的交互

HarmonyOS开发者

HarmonyOS

低代码平台如何提高开发效率?

高端章鱼哥

软件开发 低代码 JNPF

快速拉取聚水潭单据的ETL工具

RestCloud

数据同步 ETL

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