写点什么

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

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

关注

评论

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

javaScript深拷贝和浅拷贝简单梳理

程序猿布欧

JavaScript 前端 深拷贝 浅拷贝 深拷贝与浅拷贝

企评家,助力创业板企业成长性评价

企评家

企业评价 企业大数据 创业板 评价维度 成长性

BIGO 的数据管理与应用实践

NebulaGraph

数据库 图数据库 数据管理

新零售SaaS架构:组织管理的底层逻辑与架构设计

架构师汤师爷

系统架构 SaaS 架构设计 组织架构

跨域处理

源字节1号

软件开发 后端开发 租房小程序

手把手推导Ring All-reduce的数学性质

OneFlow

深度学习 reduce-scatter all-gather 环状算法

化繁为简!阿里新产亿级流量系统设计核心原理高级笔记(终极版)

Java全栈架构师

Java 程序员 架构 面试 架构师

一文详解Java日志框架JUL

华为云开发者联盟

Java 日志 框架 日志框架 JUL

Hoo虎符研究院|Cradle调研报告

区块链前沿News

虎符 Hoo 虎符研究院

OpenHarmony 技术日直播回顾丨共建新技术,开拓新领域

OpenHarmony开发者

OpenHarmony 技术日

linux监控软件有哪些?用什么软件好?

行云管家

Linux 运维 监控软件

开拓新领域 OpenHarmony多行业软件发行版逐步落地

科技汇

EasyCV开源|开箱即用的视觉自监督+Transformer算法库

阿里云大数据AI技术

算法 计算机视觉 开源技术

活动预告 | 洞见科技纪凯受邀出席「隐私计算应用与发展论坛」

洞见科技

「Substrate Evangelist Program」顺利开幕,期待各位布道者共建 Substrate 生态!

One Block Community

Substrate 区块链资讯 波卡生态 Parity

什么是敏捷开发,敏捷开发落地指南之迭代排期

阿里云云效

云计算 阿里云 敏捷开发 研发 研发敏捷

想参加培训学习web前端不知道靠不靠谱

@零度

web前端开发

全面解读OpenHarmony 3.1 Release版本,夯实技术底座 打造繁荣生态

科技汇

即时通讯软件建设,聚焦数据安全

a13823115807

双许可、先决条件、附加条款……开源许可证的疑难杂问

一君

这是一个有关自律的复杂故事

Coffee Cat

数据分析 监控 自律 跑步 可观测

【阿里云大咖说】填问卷送好礼正式上线,快来参与吧!

大咖说

大咖说 问卷 礼品

在MAUI中使用Masa Blazor

MASA技术团队

C# .net 微软 组件 组件库

Windows服务器运维用什么软件好?不想加班了!

行云管家

运维 IT运维 行云管家 服务器运维 Windows服务器

netty系列之:netty对marshalling的支持

程序那些事

Java Netty 程序那些事 4月月更

培训学习选择java好还是前端好

@零度

JAVA开发 web前端

JavaScript的事件循环机制浅析

程序猿布欧

JavaScript 前端 前端面试 防抖节流

《数字经济全景白皮书》Z世代用户洞察篇(3)重磅发布!

易观分析

用户分析 Z世代

宣布 Databricks 支持 Amazon Graviton2,性价比提高 3 倍

亚马逊云科技 (Amazon Web Services)

Tech 专栏

观察者模式 vs 发布订阅模式,千万不要再混淆了

战场小包

前端 设计模式 4月月更

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