写点什么

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

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

关注

评论

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

深入浅出MySQL - MyISAM有趣的那些“锁”事儿

Java 程序员 后端

源码分析ElasticJob选主实现原理

Java 程序员 后端

深入学习Kafka数据消费大致流程(如何创建并使用Kafka消费者)

Java 程序员 后端

深入理解MySQL索引

Java 程序员 后端

渣本Java开发小伙如何一步步成为架构师?回首看来,每一步都不容易

Java 程序员 后端

源码分析Dubbo服务消费端启动流程

Java 程序员 后端

浅谈物联网开发最热协议—MQTT协议

Java 程序员 后端

浅谈Java开发规范与开发细节(下)

Java 程序员 后端

深入理解Java类加载器(一):Java类加载原理解析

Java 程序员 后端

毕业参加工作了,记住一句话,攒钱绝对靠谱(1)

Java 程序员 后端

消息发送常见错误与解决方案

Java 程序员 后端

源码分析Dubbo 泛化调用与泛化实现原理

Java 程序员 后端

漫谈一条SQL语句的一生

Java 程序员 后端

测试用例的设计方法及案例

Java 程序员 后端

注解式限流是如何实现的?

Java 程序员 后端

淦!阿里限产新一代微服务+K8S+容器进阶笔记,实战理论满满

Java 程序员 后端

深入理解Java String类

Java 程序员 后端

深入理解什么是端口(port)

Java 程序员 后端

清幽现云山,虚静出内功。阿里《Java开发手册》最新嵩山版发布

Java 程序员 后端

毕业参加工作了,记住一句话,攒钱绝对靠谱

Java 程序员 后端

泪目!跳槽太不容易了,美团4轮面试,四个小时灵魂拷问,结局我哭了!

Java 程序员 后端

浅谈(chain of responsibility)责任链模式

Java 程序员 后端

消息中间件

Java 程序员 后端

没用过这些 VSCode 插件?怪不得写代码头疼

Java 程序员 后端

泪洒阿里,面试惜败闭关2月金九银十再战Alibaba!

Java 程序员 后端

浅谈分布式事务

Java 程序员 后端

深入理解JAVA虚拟机原理之Dalvik虚拟机(三)

Java 程序员 后端

深入理解JAVA虚拟机原理之内存分配策略(二)

Java 程序员 后端

渣本Java开发小伙如何一步步成为架构师?回首看来,每一步都不容易(1)

Java 程序员 后端

没想到-Springboot-+-Flowable-开发工作流会如此简单

Java 程序员 后端

求职经历,三轮技术面 +HR 面,面试也不过如此

Java 程序员 后端

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