AICon 深圳站 Keynote 嘉宾官宣!共探AI价值转化的实践路径 了解详情
写点什么

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

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

关注

评论

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

进大厂的iOS程序员,原来是这样“跳槽”的!

iOS猿_员

“碳中和”目标下的绿色金融探索

CECBC

金融

5分钟速读之Rust权威指南(三)

wzx

rust

2021 iOS 进阶学习视频推荐

程序员 ios开发

基于Agora Web SDK自定义直播画面

dajyaretakuya

WebRTC 声网 Agora 数字合成

图说丨一图看懂浪潮云“1231”业务战略

CRM Transaction处理中的权限控制

汪子熙

CRM SAP abap

“技术+应用”驱动金融科技创新融合

CECBC

金融

☕️【Java技术之旅】带你看透Lambda表达式的本质

码界西柚

Java Lambda java8 Lambda函数 5月日更

云小课 | 一个三分钟快速定制OCR应用的神器,要不?

华为云开发者联盟

AI modelarts OCR ModelArts Pro 开发套件

15年云原生实践,在关键节点我们做对了什么? | 云原生大咖说

阿里巴巴中间件

被解救的代码 - 代码即服务时代来了!

阿里巴巴云原生

容器 微服务 开发者 云原生 开发工具

用ABAP 生成二维码 QR Code

汪子熙

二维码 SAP abap

从基础到实战一应俱全,这份全网首发的Kafka技术手册,超详细!

Java架构师迁哥

4年Java开发经验,经常被问到高并发、性能调优方面的问题,该怎么办?

Java架构师迁哥

架构实战营模块四总结

竹林七贤

2021最热门的20个数据库学习总结,你会用哪几个?

北游学Java

Java MySQL 数据库 后端

全链路压测二十问干货汇总(上)

TakinTalks稳定性社区

ElasticSearch架构剖析

五分钟学大数据

大数据 elasticsearch 5月日更

有无社保缴纳识别接口

ALone

网络攻防学习笔记 Day17

穿过生命散发芬芳

5月日更 网络攻防

对比解读《2020年CNCF中国云原生调查报告》

阿里巴巴中间件

打破思维定式(十一)

Changing Lin

Flink消费Kafka

大数据技术指南

大数据 flink 5月日更

业界率先支持 MCP-OVER-XDS 协议,Nacos 2.0.1 + 1.4.2 Release 正式发布

阿里巴巴云原生

容器 微服务 云原生 k8s 中间件

腾讯校招都会问些什么?| 五面腾讯(Java岗)经历分享

Java架构师迁哥

重磅成果 | 《数据安全治理白皮书3.0》正式对外发布!

DT极客

Python--TKinter

若尘

Python编程 5月日更

Keycloak 13 自定义用户身份认证流程(User Storage SPI)

Zhang

MySQL spi keycloak 13.0.0 user storage spi

新融合,新跳板:智能云网如何让企业数字化转型,起步即领先?

脑极体

中国区块链第一村的价值裂变

CECBC

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