阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

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

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

关注

评论

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

信创BeeWorks-国产化企业级im即时通讯软件

BeeWorks

即时通讯 IM

DeepSeek 谈运维:AI 时代运维资源升级,从数据资产到智能能力的进阶之路

嘉为蓝鲸

AIOPS 智能运维 DeepSeek

用小猫的视角看世界——关于「小猫相机」的一点浪漫构想

花十君

小猫相机 浪漫视角 柔软镜头 猫咪视角

CST软件如何将Altium的PCB板子导入CST

思茂信息

cst仿真软件 CST软件 CST Studio Suite

什么是数据集市(Data Mart)?

镜舟科技

数据仓库 OLAP 数据集市 多维数据模型 在线分析处理

AI编程新时代,CodeBuddy 带你来体验

六月的雨在InfoQ

AI编程 CodeBuddy CodeBuddy首席试玩官 AI 代码助手

KET口语陪练APP的功能

北京木奇移动技术有限公司

软件外包公司 AI口语APP KET考试

财务合同MCP实践

京东科技开发者

行业分享丨虚拟原型技术:颠覆传统,引领矿业装备设计新纪元

Altair RapidMiner

AI 数字孪生 仿真 CAE 离散元仿真

Linux内核与芯片设计的深度结合:助力底层技术突破

博文视点Broadview

Web3软件系统的开发框架

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

仿真驱动创新丨Altair仿真+AI如何赋能轨道交通数字化升级列车创新?

Altair RapidMiner

数字孪生 仿真 CAE physicsAI 轨道交通

大模型辅助科研编程实录分享:效率飙升!“分分钟搞定”,智能体编排如何加速工作流

ModelWhale

Web3应用的上线流程

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

开发者即创世者——HarmonyOS极客马拉松2025英雄召集令

HarmonyOS开发者

AI助力Calvin Klein实现供应链精准决策

第七在线

Web3软件系统的技术架构

北京木奇移动技术有限公司

区块链技术 软件外包公司 web3开发

大模型技术跃迁,容联七陌开启智能客服新纪元

人称T客

迭代器失效:99%的C++程序员都会踩的坑 !

秃头小帅oi

“一键登录“变”一键沦陷”?小心高校统一认证平台成黑客“后门"!

权说安全

网络安全 统一身份认证

Uniapp开发鸿蒙应用教程之自定义导航栏

幽蓝计划

鸿蒙跨平台开发

用低代码打造企业AI中台,真的可行吗?

天津汇柏科技有限公司

人工智能 低代码

工单智能化应用有哪些,工单管理系统选型推荐

云智慧AIOps社区

信息化、数字化、数智化之间的区别和联系

积木链小链

数字化 信息化 智能制造

AI智能体:大模型之后的下个技术革命?

测试人

人工智能

TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章

合合技术团队

人工智能 算法 #大数据

驳“RAG 已死”论:上下文窗口扩展≠RAG 终结

Baihai IDP

AI LLM rag 检索增强生成 长上下文语言模型

DotNet 入门(一):环境安装

北桥苏

.net dotnet

嘉为蓝鲸受邀出席 2025 GOPS全球运维大会·深圳站

嘉为蓝鲸

GOPS全球运维大会

ITSM运营:降低变更风险的自动化与流程优化实践

嘉为蓝鲸

ITSM 智能运维

安全你可以永远相信奇瑞!奇瑞汽车安全之夜即将开幕

科技热闻

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