写点什么

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

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

关注

评论

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

QLab Pro v5.4.0激活版 mac演出控制软件

Rose

如何用二维码进行来访登记?这个模板帮你轻松实现!

草料二维码

草料二维码 访客登记 来访登记 访客来访二维码 来访二维码

Golang 1.23: 新的 unique 包

huizhou92

Game-Fi 新贵 MetaArena 项目全解析:重塑区块链游戏生态

股市老人

借助 NGINX 实现 QUIC+HTTP/3 对 OpenSSL 的支持

NGINX开源社区

nginx API openssl HTTP/3 QUIC TLS

区块链钱包浏览器开发功能,价格和时间周期

区块链开发团队DappNetWork

Game-Fi 新贵 MetaArena 项目全解析:重塑区块链游戏生态

股市老人

快速删除Win10、Win11恼人的英文键盘

程序员与厨子

windows 键盘 输入法

高清视频下载器4K Video Downloader Plus,适用于macOS和Windows系统

Rose

低代码开发应用:国企数字化转型的思考与探索

快乐非自愿限量之名

低代码 数字化

领域数据视图化和无代码设计原理

XIAOJUSURVEY

前端 低代码 搭建 schema 问卷模型

公链开发需要多少钱?

区块链开发团队DappNetWork

如何用Vue3构建一个交互式3D图

秃头小帅oi

人工智能ChatGPT的多种应用:如何更好地提问

霍格沃兹测试开发学社

QEMU X86架构机器类型之pc-i440fx-piix

Linux内核拾遗

芯片 虚拟化 qemu

时序数据库 IoTDB 构筑长安汽车海量车况数据管理新引擎,助力智能网联汽车发展

Apache IoTDB

中小企业转型有招,华为云618营销季步步“智”胜

YG科技

2024 年 5 月区块链游戏研报:市值增长、玩家参与变迁、迷你游戏兴起

Footprint Analytics

链游

从0到100:找搭子小程序开发笔记(一)

CC同学

Go 1.23: 新包 Iter

huizhou92

Go

蓝易云 - 关于openfeign的http和rpc详解

百度搜索:蓝易云

Web HTTP Hystrix Ribbon openfeign

蓝易云 - Ubuntu22.04交叉编译gcc9.5 for arm

百度搜索:蓝易云

ubuntu 内存 服务器 云服务器 GCC

专门为Mac用户设计的强大视频下载工具:iTubeGo YouTube Downloader

Rose

多种类型的思维导图 Simplemind pro for Mac v2.4.0中文激活版

Rose

A Better Finder Rename(ABFR):Mac平台上的批量重命名工具

Rose

智谱AI CodeGeeX代码大模型获信通院最高等级,成为国内首批通过可信AI评估的企业

技术研究院

蓝易云 - Redisson集成SpringBoot详解

百度搜索:蓝易云

Java redis spring Spring Boot redisson

PS亮度蒙版工具 Lumenzia for Mac 支持ps2024 v11.7.7最新版安装

Rose

苹果mac电脑 全新的macOS 15.0测试系统发布,快来体验一下吧!

Rose

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