写点什么

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

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

关注

评论

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

纪念金庸先生百年诞辰:华为阅读全线上线金庸先生经典作品,致敬武侠巨匠

最新动态

值得思考的两个测试面试题

老张

软件测试 面试经验

三思超100㎡ P0.9 8K LED大屏登陆广东佛山丨一屏控全局

电子信息发烧客

软件测试学习笔记丨基于Gitlab的持续集成机制

测试人

软件测试

cgroup、资源池、用户的关系..涉及到GaussDB(DWS)的资源设置

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 华为云GaussDB(DWS)

一文读懂,新质生产力!

天津汇柏科技有限公司

新质生产力

小米汽车 27 分钟大定破突破 5 万台;中国在全球率先商用 5.5G 丨 RTE 开发者日报 Vol.174

RTE开发者社区

深度剖析鞋服品牌商品数字化管理的重要性

第七在线

一张二维码VS一个行李箱?!看华为云时习知如何助力防城港核电基本安全考试

云计算 数字化转型 华为云

一文聊透数字化转型,获得企业未来生存的入场券

同道说

产品 架构 数据 趋势 数字化

亮数据,可视化数据采集强大利器

陈橘又青

数据采集

消息队列的七种经典应用场景

不在线第一只蜗牛

消息队列

深入浅出:易懂的 Windows 平台 cURL 命令使用教程

Liam

Java 程序员 后端 API curl

与鲸同行,智领未来!和鲸科技“人工智能+X”学科建设合作交流会(北京站)圆满结束!

ModelWhale

人工智能 大数据 数据科学 实验室 新型基础设施建设

华为云亮相KubeCon EU 2024,以持续开源创新开启智能时代

华为云开源

开源 云原生 华为云

启信宝商业大数据助力全国经济普查

合合技术团队

人工智能 商业大数据 启信宝

2024鲸鸿动能开发者变现服务沙龙首站启幕

最新动态

如何专业、正确地使用LED租赁屏

Dylan

技术 音乐 视觉 LED LED显示屏

MySQL索引优化:选择合适的索引类型

gogo

站群服务器优化技巧:提升网站速度与搜索引擎排名

一只扑棱蛾子

站群服务器

如何提高知识库系统管理水平?

秃头小帅oi

来,把弹幕打在鸿蒙原生应用上!B站完成鸿蒙原生应用Beta版本开发

最新动态

智能消息推送SDK产品:移动APP拉新促活的利器

MobTech袤博科技

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