写点什么

使用 TPL Dataflow 处理生产者 / 消费者问题

  • 2014-01-28
  • 本文字数:560 字

    阅读完需:约 2 分钟

在最简单的情况下,生产者 / 消费者场景很容易处理。生产者向一个线程安全的队列中推送消息,消费者从该队列中取消息。每一端可以有一个专用线程,这就行了。至少在并发症状出现之前是行得通的。

并发症状是多方面的。你可能需要向多个消费者分发或广播消息,而不是只有一个消费者。因为性能原因,在执行某些操作之前,可能需要批量提交一些请求。也可能有多个步骤,而如果每个步骤用一个专用线程的话,负载会很繁重。或者是随着消息在线程间跳转,上下文切换会影响延迟。

TPL Dataflow 就是为解决这些问题而设计的。不同于使用线程,构成数据流的轻量级块(Block)按需使用和分享线程池中的线程。但是和任何新框架一样,我们有很多东西要学习,而且很多比较高级的选项可能会掩盖基础知识。

为简化入门,Taskmatics 的 Dave Marini 撰写了一篇文章——“使用流:利用 TPL Dataflow 结构简化生产者 / 消费者问题的处理( Going with the Flow: Simplifying Producer/Consumer Processing with TPL Dataflow Structures )”。Dave 使用一个订单交付工作流(如上图所示),介绍了大多数场景需要的基本块:

  • BufferBlock
  • BroadcastBlock
  • BatchBlock
  • TransformManyBlock
  • ActionBlock

这篇文章还介绍了一些容易被忽略的陷阱,比如刷新批处理和完成工作流等。

查看英文原文: Producer/Consumer Processing with TPL Dataflow

2014-01-28 09:031976
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 144.1 次阅读, 收获喜欢 35 次。

关注

评论

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

CentOS 停服,龙蜥社区已上线解决方案专区

OpenAnolis小助手

centos 国产操作系统 龙蜥社区

一个cpp协程库的前世今生(四)协程上下文ctx

SkyFire

c++ cocpp

探索SaaS产业发展新机遇|鲁班会贵安首秀圆满收官

华为云开发者联盟

SaaS 华为云 应用构建

大型购物平台的系统设计与架构

恒生LIGHT云社区

平台搭建 构架 平台架构

当MySQL执行XA事务时遭遇崩溃,且看华为云如何保障数据一致性

华为云开发者联盟

MySQL 华为云

向未来飞驰:武汉推开了AI产业化和产业AI化的三重门

脑极体

祝大家元旦快乐,分享一些知识演讲

石云升

28天写作 12月日更

回顾 2021,拥抱 2022~

阿策小和尚

盘点2021

盘点 2021|一个 SAP 成都研究院开发工程师的2021年度总结:既没有厚积,也未能薄发

汪子熙

程序员 28天写作 12月日更 盘点2021 盘点 2021

硬核化解ISV四大痛点,华为云智联生活行业加速器助力伙伴实现商业成功

华为云开发者联盟

华为云 HarmonyOS 智联生活 华为云IoTDA 云云协同

『征文精选』ShardingSphere-Proxy:Base 事务基于 Seata 验证

SphereEx

数据库 架构 开源社区 ShardingSphere SphereEx

皮皮APP x 武汉市社会心理服务指导中心 联合开展社交讲座

联营汇聚

seata分布式事务TCC模式介绍及推荐实践

恒生LIGHT云社区

分布式 分布式事务 seata TCC

LabVIEW图像分割算法(基础篇—6)

不脱发的程序猿

机器视觉 图像处理 LabVIEW 图像分割算法

关于内核堆溢出漏洞的分析

网络安全学海

黑客 网络安全 信息安全 安全漏洞 渗透测试·

性能提升40%!阿里云神龙大数据加速引擎获TPCx-BB世界排名第一

阿里云弹性计算

阿里云 神龙

腾讯云数据库2021年成绩单,请检阅!

腾讯云数据库

tdsql 国产数据库

Postman 使用教程 - 手把手教你 API 接口测试

蒋川

Postman 接口测试

最好的 6 个免费天气 API 接口对比测评

蒋川

API 天气api

Hoo虎符研究院 | 币海寻珠最新一期的DAO生态

区块链前沿News

DAO Hoo 虎符交易所 虎符研究院

61 K8S之日志系统部署

穿过生命散发芬芳

k8s 28天写作 12月日更

.NET6新东西--Logging Source Generator

喵叔

28天写作 12月日更

一个cpp协程库的前世今生(五)协程执行环境env

SkyFire

c++ cocpp

五天玩转EMAS Serverless训练营

移动研发平台EMAS

阿里云 #Serverless #EMAS

一个cpp协程库的前世今生(三)cocpp的核心框架结构

SkyFire

c++ cocpp

如何打造一个云原生背景下的可观测平台?

淡泊明志、宁静致远

建木持续集成平台v2.1.1发布

Jianmu

DevOps CI/CD 开源软件

2022 让我们登上更大的舞台

坚果

28天写作 12月日更 2021年终总结 盘点 2021

Java 数据持久化系列之 HikariCP (一)

程序员历小冰

持久化 HikariCP 28天写作 12月日更

CRM系统为什么被认为是企业的重要资产?

低代码小观

企业管理 资产管理 CRM 企业管理系统 CRM系统

数字化转型失败,有哪些原因?

禅道项目管理

数字化转型

使用TPL Dataflow处理生产者/消费者问题_.NET_Jonathan Allen_InfoQ精选文章