写点什么

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

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

关注

评论

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

【京东开源项目】微前端框架MicroApp 1.0正式发布

京东科技开发者

开源 微前端 微前端框架 企业号10月PK榜 MicroApp

Atlassian午餐会直播回顾:如何在Jira中进行项目时间与成本管理?

龙智—DevSecOps解决方案

工时管理 jira工时 Jira工时管理插件

软件测试|教你用skip灵活跳过用例

霍格沃兹测试开发学社

挖掘文本的奇妙力量:传统与深度方法探索匹配之道

汀丶人工智能

推荐系统 语义搜索 向量搜索

定制户外led屏幕需要了解哪些参数

Dylan

应用场景 数字 定制化 LED 屏幕

如何管理嵌入式开发中产生的数字资产?ACT汽车电子与软件技术周演讲回顾

龙智—DevSecOps解决方案

嵌入式开发 汽车嵌入式开发

软件测试|Pytest必会技巧(三)

霍格沃兹测试开发学社

深度学习应用开发示例之目标识别

矩视智能

深度学习 机器视觉

log4j2同步日志引发的性能问题 | 京东物流技术团队

京东科技开发者

log4j2 Log4j2 漏洞 日志同步 企业号10月PK榜 性能问题

主要的商业云管平台公司有哪些?大家推荐哪家?

行云管家

云计算 企业上云 云管平台 云管理

简单好用的磁盘管理工具 DiskCatalogMaker 中文版

胖墩儿不胖y

磁盘管理 Mac软件 磁盘管理工具

Python 爬虫实战

Noah

进来“抄作业”!示例代码、操作手册,尽在华为云Codelabs!

云计算 软件开发 华为云

软件测试|简单易学的性能监控体系prometheus+grafana搭建教程

霍格沃兹测试开发学社

Chiplet封装技术的应用现状

IC男奋斗史

封装 芯片 半导体 chiplet

MISRA C++:2023,您需要了解的下一个MISRA信息

龙智—DevSecOps解决方案

MISRA C++:2023 MISRA MISRA C++

ARTS-WEEK9(23.10.9-23.10.15)

Echo!!!

软件测试|不会Python RPC,一篇文章教你入门

霍格沃兹测试开发学社

软件测试|Pytest的必会技巧(一)

霍格沃兹测试开发学社

与腾讯云“直接对话”,用友生态如何为数实融合加力?

用友BIP

腾讯云 Fast by BIP

游戏开发年度报告 | 2023年游戏开发团队最流行的制作和发行的方式

龙智—DevSecOps解决方案

中电金信、用友相向而行 成就数智时代专业服务佳话

用友BIP

数智化

10个最佳区块链分析工具 区块链系统开发

区块链软件开发推广运营

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

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