在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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

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

关注

评论

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

拿了阿里、腾讯的offer的大佬给想进互联网大厂的程序员一个忠告

Java架构追梦

Java 阿里 程序员面试

hive学习笔记之四:分区表

爱好编程进阶

Java 程序员 后端开发

Java 1045 快速排序

爱好编程进阶

Java 程序员 后端开发

手写一个持久化的Flutter会话管理器

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

HTTP 协议入门详解

爱好编程进阶

Java 程序员 后端开发

java List、Object、String

爱好编程进阶

Java 程序员 后端开发

Git进阶系列 | 8. 用Reflog恢复丢失的提交

俞凡

git 最佳实践

Day182

爱好编程进阶

Java 程序员 后端开发

flume基本概念与操作实例(常用source)

爱好编程进阶

Java 程序员 后端开发

Git进阶系列 | 7. Git中的Cherry-pick提交

俞凡

git

Day159

爱好编程进阶

程序员 后端开发

Day220、nginx快速入门 -nginx

爱好编程进阶

程序员 后端开发

ElasticSearch 概述

爱好编程进阶

Java 程序员 后端开发

网站开发进阶(十)页面嵌套

No Silver Bullet

jsp iframe 5月月更 页面嵌套 include

虎符交易所Hoo研究院|音乐NFT的路径在哪

区块链前沿News

NFT 虎符 Hoo 虎符交易所

Hibernate多对多的关系映射,详解(代码

爱好编程进阶

Java 程序员 后端开发

Hive-0

爱好编程进阶

Java 程序员 后端开发

jackson学习之二:jackson-core

爱好编程进阶

Java 程序员 后端开发

Java 1027 打印沙漏

爱好编程进阶

Java 程序员 后端开发

架构实战营模块三作业

哈啰–J

励志!一年时间,从小白到进入阿里核心部门,“他”的逆袭之路

Java架构追梦

Java 后端开发 程序员面试

SAP 电商云的 Spartacus Storefront 如何配置多个 JavaScript Application

汪子熙

angular SPA SAP 5月月更 电商云

B站疯传20W份整套2021大厂面试1000题最新汇总(附视频答案详解)

爱好编程进阶

Java 程序员 后端开发

无聊科技正经事周刊(第5期):五一长假与虚拟旅行

潘大壮

程序员 周刊 科技 行业趋势 科技周刊

电阻电路的等效变换 (Ⅲ)

謓泽

5月月更

DevOps系列之 —— DevOps概览(三)DevCloud HE2E DevOps 框架及其主要服务

若尘

DevOps 5月月更

26岁到来之际,我在阿里实现了年薪40W+的小目标

Java架构追梦

Java 后端开发 程序员面试

CGB2107-DAY07总结复习

爱好编程进阶

Java 程序员 后端开发

docker安装与启动

爱好编程进阶

Java 程序员 后端开发

Dubbo源码分析- 总体介绍与模块划分

爱好编程进阶

程序员 后端开发

网站开发进阶 (十一) 知识汇总

No Silver Bullet

二维码 标签 5月月更 打印 元素隐藏

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