HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

TPL Dataflow——CCR 的后继

  • 2011-01-09
  • 本文字数:1099 字

    阅读完需:约 4 分钟

TPL Dataflow 是微软面向高并发应用而推出的新程序库。借助于异步消息传递与管道,它可以提供比线程池更好的控制,也比手工线程方式具备更好的性能。代价则是你需要遵循.NET 程序员并不太熟悉的一些设计模式。

一个数据流包含了一系列的“块(block)”。在之前的 CCR 中,每个块叫做一个端口(port),它可以是源数据,也可以是目标数据。通常需要将数据发送给一个传播块以让数据进入到数据流当中,所谓传播块就是实现了 ISourceBlock 与 ITargetBlock 的块。由于传播块也是源,因此它可以链接到其他目标或是传播块上。数据流以异步方式从一个块进入到另一个块当中,根据需要它通常在源或目标处进行缓存。

见名知意,TPL Dataflow 底层的基础设施是.NET 4 的 Task Parallel Library。与 TPL 一样,你可以使用客户化实现替换掉默认的调度器。开箱即用的实现就是.NET 的线程池系统以及使用了异步上下文的框架。如果你希望将数据流运行在特定的线程上时通常会使用后者,比如说使用数据流操纵 GUI 时。文档在这点上描述的并不是十分清楚,但似乎你可以每个块为基础设置调度器。如果真的是这样,那它真的是提供了一种优秀的方式将数据编排到 GUI 线程上了。

默认情况下,数据流已经针对性能进行了调解,实现方式也很棒,这意味着一旦激活了某个块,那么它就会继续处理数据直到运行完毕。为了防止某个块消耗掉所有可用资源,我们可以为其设置一个消息数限定值。如果设置了,那么块只会处理设定的数据量,然后就会终止当前任务并由下一个接管。

块可以使用贪婪或非贪婪的方式使用数据。当多个目标都在争夺同一个源的消息时,后者的价值就彰显出来了。比如说,在使用多个目标对同一源进行负载平衡时,你想要保证这些目标是非贪婪的,以免所有数据都进入到第一个贪婪的块当中。使用非贪婪方式的另一个原因是当消息被新版本替换掉时能够丢弃掉这些消息。Broadcast 块就能说明这个问题。它将每条消息提供给每个目标。如果目标不接受该块,那么在 Broadcast 块接收到下一条消息时它还是可用的。

现在来谈谈锁的问题,为了避免死锁,TPL Dataflow 采用了一个很有趣的设计。当某个块需要接收多个源的输入时,它会等待,直到所有源的数据都可用为止。这样,它将使用两阶段提交来保证确实从每个源获取到了数据。我们强烈推荐开发者使用这种机制,不要手工锁定工作流中的数据。

这种设计可能会导致竞态条件,尤其是与 Broadcast 这样的块联合使用时更是如此。本质上,该问题源自于一条消息被多个块发送并操纵了。既然块会干扰到调度器,那么将不变的数据类型作为消息会更加安全。

目前, TPL Dataflow Library 与 Async CTP 都可以下载了。

查看英文原文: TPL Dataflow – The Successor to CCR

2011-01-09 11:501600
用户头像

发布了 88 篇内容, 共 262.4 次阅读, 收获喜欢 8 次。

关注

评论

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

量化交易/合约量化/合约跟单/秒合约/永续合约/交易所系统开发

V\TG【ch3nguang】

【ASPLOS2024】RECom:通过编译器技术加速推荐模型推理,论文中选并获得荣誉奖项!

阿里云大数据AI技术

人工智能 阿里云 论文 ASPLOS

DAPP去中心化矩阵公排互助系统开发教程指南及源码设计

V\TG【ch3nguang】

SSL证书验证失败的原因

德迅云安全杨德俊

抖音集团 FlinkSQL 性能优化探索及实践

字节跳动数据平台

flink 云服务 火山引擎 流式计算

主要根据什么因素选择云堡垒机规格?

行云管家

云计算 数据安全 云堡垒机 云数据

淘宝商品销量数据接口:获取与利用全攻略

tbapi

淘宝商品销量接口 淘宝商品销量API 淘宝月销量接口 淘宝商品销量数据采集

Acrobat pro Dc 2023中文直装安装包 附Mac版和win版激活补丁

Rose

Project Office Pro:一站式项目管理解决方案,让工作更高效!

Rose

极兔速递2024上半年净利润转正 中国市场首次盈利

财见

推荐6款好用的低代码开发平台

秃头小帅oi

反欺诈技术发展的现状与未来预测

芯盾时代

金融 反欺诈

LED双色屏的特性与受欢迎的原因

Dylan

升级 LED display LED显示屏 色彩 颜色

巧用PDF转Markdown插件,在扣子(Coze)手搓一个有趣好玩的AI Bot

合合技术团队

人工智能 PDF 科技

Microsoft 365 有什么用?microsoft 365永久激活密钥

Rose

强化远程管理安全:SecureCRT——您的首选SSH客户端与终端仿真器

Rose

SecureCRT Mac破解版 终端仿真软件

游戏行业大模型陪练实战:3分钟快速配置对练剧本

中关村科金

人工智能 大模型 智能陪练

从海量信息中脱颖而出:Workflow智能分析解决方案,大语言模型为AI科技文章打造精准摘要评分体系(总篇章)

汀丶人工智能

人工智能 智能问答

MIAOYUN与CStack签署总代协议,共拓一体化云端交互管理市场!

MIAOYUN

云计算 云原生 云服务 云桌面 战略合作

Winclone Pro——专业级Windows虚拟机克隆与恢复工具

Rose

Winclone Pro Windows系统备份

MySQL亿级数据平滑迁移实战

vivo互联网技术

MySQL spring mybatis 数据迁移

「模型量化技术」可视化指南:A Visual Guide to Quantization

Baihai IDP

AI 模型量化 白海科技 LLMs 企业号 8 月 PK 榜

办公必备软件 PDF Reader Pro for mac 全能pdf编辑

Rose

PDF Reader Pro破解 PDF编辑软件 PDF Reader Pro

人工智能时代:哪些职业将被取代,哪些职业难以替代?

天津汇柏科技有限公司

人工智能

Photoshop 2024最新版详细安装教程 附mac版和win版安装包

Rose

NTFS 磁盘管理器NTFS Disk by Omi NTFS 安装简单 完美支m1/m2

Rose

Omi NTFS磁盘管理助手 NTFS Disk by Omi NTFS NTFS 磁盘管理器 Omi NTFS

从零开始探索人工智能:Python与PyTorch的奇妙之旅

代码忍者

引领未来商业潮流:AI赋能商品管理软件的革新应用与趋势

第七在线

量化现货合约跟单交易所系统开发成熟技术/步骤教程/策略指南

V\TG【ch3nguang】

基于Java的XML编辑器 Oxygen XML Editor for Mac

Rose

Oxygen XML Editor XML开发

Auto Mouse Click 直装版 Mac高效稳定的鼠标连点器

Rose

TPL Dataflow——CCR的后继_.NET_Jonathan Allen_InfoQ精选文章