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

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

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

关注

评论

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

浅谈 SpringMVC 执行过程

是月月啊2023

Spring 配置解析

RocketMQ 如何保证消息不丢失

是月月啊2023

RocketMQ

NFT 市场开发:洞察、功能和成本综合指南

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

22 | 哈希算法(下):哈希算法在分布式系统中有哪些应用

鲁米

20 | 散列表(下):为什么散列表和链表经常会一起使用

鲁米

实时3D渲染-定义、原理及应用

3DCAT实时渲染

实时渲染 实时云渲染

智能工厂关键技术应用(第一、二、三讲)

工赋开发者社区

2023年 - 我的程序员之旅和成长故事

Leo

#技术人的2023总结

DevOps|研发提效-敏捷开发之任务看板

laofo

DevOps Scrum 敏捷 敏捷开发 研发效能

19 | 散列表(中):如何打造一个工业级水平的散列表

鲁米

专业直观Git客户端:Fork 免激活最新

胖墩儿不胖y

git Mac软件

通义家族大模型总结

多啦A梦

大模型

我与Stable Diffusion的“缘”

AI 大模型训练 Stable Diffustion 大模型推理

25 | 红黑树(上):为什么工程中都用红黑树这种二叉树

鲁米

Java http 接口请求详解。

百度搜索:蓝易云

Java Linux HTTP 云服务器

程序员职业规划-实践篇

吳先森321

程序人生 职业规划 求职

SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则

小万哥

MySQL 数据库 sql 程序员 后端开发

实用编程技巧:MybatisPlus结合groupby实现分组和sum求和

知识浅谈

MyBatisPlus Mybatis-Plus

Python终于可以操作Office了

程序员晚枫

Python 自动化办公 入门版

《钢岚》今日首发,成为首款基于HarmonyOS NEXT开发的战棋新游

最新动态

Dockerfile和搭建 Docker 私有仓库:让容器化部署变得更简单

百度搜索:蓝易云

Docker Linux 运维 Dockerfile 云服务器

2023工作总结怎么写?保姆级的年终总结万能公式来了,助你一臂之力!

彭宏豪95

互联网 职场 年终总结 在线白板 工作总结

mac重复文件识别软件 Advanced Duplicate Cleaner直装最新

mac大玩家j

Mac软件 重复识别软件 重复查找工具

24 | 二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?

鲁米

SQL PRIMARY KEY 约束- 唯一标识表中记录的关键约束

小万哥

MySQL 数据库 sql 程序员 后端开发

广西汽车集团携手时习知打造数字化学习平台,加速人才转型

轶天下事

app开发

Geek_8da502

Helio 升级为 LISTA DAO,开启多链时代新篇章并宣布积分空投计划

股市老人

23 | 二叉树基础(上):什么样的二叉树适合用数组来存储

鲁米

ADA算力DAPP挖矿系统开发丨详情

l8l259l3365

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