NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Zlatko Michailov 再谈任务并行库数据流(TPL Data Flow)

  • 2012-02-27
  • 本文字数:1123 字

    阅读完需:约 4 分钟

我们对《自定义任务并行库数据流块实现指南》(Guide to Implementing Custom TPL Dataflow Blocks)的作者——Zlatko Michailov 进行了一个简短的采访。

InfoQ:在你看来,TPL 数据流(TPL Dataflow)最适合于哪些应用程序?而对哪些应用程序又不太适合?

TPL 数据流是一个流处理平台,它可以处理音频 / 视频帧流、价格报价波动流等。当消息以高频率到来时,TPL 数据流特别适用。使用它之后,你会看到高效率平台和非高效平台之间的差距。

通常使用数据流平台的一个额外好处是:数据流网络拓扑会参与到处理过程中。应用程序会由一个个小而精的代理(delegate)构成,从而使应用程序更易维护。

InfoQ:你认为 TPL 数据流今后会是一个少数人使用的高级技术?还是你认为它会很大程度取代 Task,就像 Task 取代线程一样?

我认为都不会。TPL 数据流不会取代 Task。(我也不认为 Task 取代了线程;Task 只是填补了并发编程里的一块空白。)TPL 数据流借用 Task 实现了众多模式。虽然其主模式是流处理,但是每一个数据流块(block)都很常规,且可以用于其他用途。例如,WriteOnce 块被设计用作请求 - 响应机制——WriteOnce 块实例化基于请求之上,一旦响应数据写回它就会自动完成,从而让请求方可以继续异步地进行工作。另外一个例子是结合 MaxDegreeOfParallelism 选项的 ActionBlock——它可以用作限流(throttling mechanism),防止同时被处理的任务数目超过指定数量。第三个例子是结合 BoundedCapacity 选项的 BufferBlock,它用作对数据来源进行限流。所以在我看来,TPL 数据流在普遍情况下都是适用的。

InfoQ:你觉得对于刚刚使用 TPL 数据流的新手而言,需要学习的最重要的东西是什么?

纯属个人意见——最重要的是需要意识到线程很昂贵,并且不应当压迫操作系统创建不必要的线程。开发人员应当关注任务间的从属关系,并依靠操作系统和框架完成那些任务的安排。

对于 TPL 数据流,我建议开发人员对每个块进行单独测试。没准你会发现某个块(block)实现的模式是你经常使用的那个。如果看到某个模式和你用过的很接近但是又不是非常像,可以考虑将多个内置块进行封装来组成该模式。如果那样做还不奏效,你也许可以编写一个简单的同步块来填补这个空缺。

InfoQ:你建不建议将 TPL 数据流和 Windows 工作流(Windows Workflow)混在一起使用?

Windows 工作流的目标是让花上数天或者甚至数月才能持久性流能够完成。它关注的是可靠性而不是性能。相反,TPL 数据流纯粹以性能为目的。它的目标就是使用最有效可行的方法来利用所有可用的硬件资源。所以技术上来说,你是可以混用这两个技术的。我的猜想是你可以将 TPL 数据流放入 Window 工作流中的某个步骤中来使用。

查看英文原文: http://www.infoq.com/news/2012/01/Zlatko-TPL

2012-02-27 06:521723
用户头像

发布了 125 篇内容, 共 35.6 次阅读, 收获喜欢 5 次。

关注

评论

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

Python 教程之数据分析(4)—— 使用 Python 进行数据分析和可视化 | 第 1 套

海拥(haiyong.site)

Python pandas 9月月更

关于链路追踪所需要了解的知识

穿过生命散发芬芳

链路追踪 9月月更

高级产品经理必备素养

产品海豚湾

产品经理 职业发展 商业化 9月月更 产品价值

Predicate

急需上岸的小谢

9月月更

室友只用了一把王者的时间就入门了「C语言」

Albert Edison

c++ C语言 函数 循环 9月月更

玖章算术受邀参加红杉Talk「创新的复利」科技专场,共同探讨云计算的前世今生

数据库 数据复制 数据管理 数据备份 玖章算术

跟着卷卷龙一起学Camera--黑电平Blacklevel

卷卷龙

ISP camera 9月月更

如何增强 ABAP 系统,允许开发人员给 ABAP 对象设置标签,方便快速检索

Jerry Wang

SAP abap Netweaver 标签体系 9月月更

云原生(三十三) | Kubernetes篇之平台存储系统部署

Lansonli

云原生 9月月更

HAVE FUN | SOFA 飞船——Layotto 星球登陆计划

SOFAStack

#开源

JPEX如期推出VISA借记卡,预计第四季度发放实体卡

股市老人

数据中心网络架构的需求原则及策略

阿泽🧸

数据中心 9月月更

实践分享!GitLab CI/CD 快速入门

北京好雨科技有限公司

企业号九月金秋榜 Kuberetes

Web3大行其道,为何说Zebec值得投资人期待?

BlockChain先知

C++学习------cassert头文件的作用与源码学习

桑榆

c++ 9月月更

【CSS·显示类型】 block、inline以及inline-block

翼同学

CSS 前端 9月月更

Linkerd 流量拆分方案

CTO技术共享

Containerlab + Kind 部署 Cilium BGP

CTO技术共享

Web3的流支付代表Zebec,熊市布局的价值逻辑

股市老人

k8s自定义controller三部曲之一:创建CRD(Custom Resource Definition)

程序员欣宸

Kubernetes k8s 9月月更

以数字技术赋能产业金融生态能力建设,破解银行的场景焦虑

易观分析

金融 银行 数字科技

华为云快成长GaussDB(for Redis)

IT资讯搬运工

Go 言 Go 语,一文看懂 Go 语言文件操作

梦想橡皮擦

Python Go 9月月更

Web3大行其道,为何说Zebec值得投资人期待?

EOSdreamer111

LeetCode两数之和的两种JavaScript解题方法比较|前端学算法

大师兄

JavaScript 算法 9月月更

从用户到开发者是一种思维进化过程 | 访 StarRocks Committer 周威

StarRocks

2022-09-01:字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之差。 给你一个字符串 s ,它只包含小写英文字母。请你返回 s 里所有 子字符串的 最大波

福大大架构师每日一题

算法 rust语言 福大大

【CSS】:正常布局流(normal flow)、有趣的浮动(float)

翼同学

CSS 前端 9月月更

NodeJs小试牛刀--聊天室搭建

zxhtom

9月月更

leetcode 206. Reverse Linked List 反转链表(简单)

okokabcd

LeetCode 数据结构与算法

【CSS·清除浮动】Clearing floats:clear、clearfix、overflow、flow-root

翼同学

CSS 前端 9月月更

Zlatko Michailov再谈任务并行库数据流(TPL Data Flow)_.NET_Jonathan Allen_InfoQ精选文章