写点什么

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

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

关注

评论

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

【干货分享】AI 开发者必学!掌握 Coze 工作流核心技能的全攻略!——慢慢学AI145

AI决策者洞察

#人工智能 Prompt

华为云Flexus云服务器X实例之openEuler系统下部署k8s管理面板KubePi

轶天下事

几分钟,即可在华为云Flexus X服务器部署安全稳定的——水果生鲜商城配送小程序

轶天下事

华为云Flexus X实例评测使用体验——安装部署discuzQ小程序博客论坛

轶天下事

哈马德国际机场报告2024年创纪录

财见

【翻译】如何构建高效智能体(Anthropic官方指导)——慢慢学AI147

AI决策者洞察

#人工智能 Prompt

云服务器Flexus X实例,基于宝塔搭建Typecho博客平台

轶天下事

从零开始使用Univer Clipsheet构建自己的爬虫插件

梦数技术团队

JavaScript GitHub 前端 爬虫工具 Chrome Extension

【全方位解析】企业如何通过提示词工程优化AI输出,提升市场竞争力—慢慢学AI045

AI决策者洞察

#人工智能 Prompt

将Vue项目部署到Flexus云服务器X实例并实现公网访问

轶天下事

云服务器Flexus X实例,Docker集成搭建Redis集群

轶天下事

使用华为云Flexus云服务器X搭建部署茶叶商城小程序uniapp

轶天下事

面试必问:MyBatis 高频面试题!

王中阳Go

Java 面试 mybatis 面试题 #后端

GSCF收购IBM Deutschland Kreditbank GmbH

财见

【小白也能学】从挫败到突破,5天地狱式开发,如何用 AI 和 Arduino 打造属于自己的智能桌宠?——慢慢学AI144

AI决策者洞察

#人工智能 Prompt

部署服务器管理软件宝塔面板

轶天下事

CnosDB元旦福利 | 小日常大惊喜?

CnosDB

rust 物联网 时序数据库 tsdb CnosDB

面试必问:数据库 高频面试题!

王中阳Go

数据库 面试 面试题 MySQL 高可用

《CPython Internals》阅读笔记:p43-p60

codists

CPython Internals

在华为云上通过Docker容器部署Elasticsearch并进行性能评测

轶天下事

英伟达世界基础模型 Cosmos,教 AI 理解物理世界;阿里通义与雷鸟合作推出 AI 眼镜丨 RTE 开发者日报

声网

使用华为云Flexus云服务器X搭建部署茶叶商城小程序uniapp

轶天下事

【场景驱动】企业的哪些重复性任务,最适合用Coze循环节点来解决?——慢慢学AI146

AI决策者洞察

#人工智能 Prompt

华为云Flexus云服务器X实例 基于CentOS系统镜像快速部署Laravel开源论坛

轶天下事

云服务器Flexus X实例评测体验之搭建MySQL数据库

轶天下事

华为云Flexus云服务器X实例的快速入门与配置指南

轶天下事

云服务器Flexus X实例,Docker集成搭建Halo博客平台

轶天下事

走出群山,长赛道“攀登者”vivo

脑极体

AI

解锁企业级邮件服务,在华为云FlexusX上部署Mailcow开源方案

轶天下事

构建企业级文件管理系统,轻松搭建Seafile社区版云存储解决方案.

轶天下事

如何搭建在线音乐平台:华为云 Flexus X 实例全攻略

轶天下事

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