写点什么

使用 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:032064
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

初识设计模式 - 原型模式

Java-fenn

Java

ESP32-C3入门教程 网络 篇(二、 Wi-Fi 配网 — Smart_config方式 和 BlueIF方式)

矜辰所致

wifi ESP32-C3 9月月更 BlueIF Smaart_config

20 条 Chrome DevTools 使用建议,盲猜这几个你不知道~

掘金安东尼

前端 9月月更

VS Code settings.json 10 个高(装)阶(杯)配置!

掘金安东尼

9月月更

阿里高工内产的 SpringBoot 实战派手册仅发布一天霸榜Github

Geek_0c76c3

Java 数据库 开源 架构 开发

国际聋人周 | 聋健人群无界融合,看见手语的力量

HarmonyOS SDK

手语

AWS CloudFormation简介

冯亮

DevOps AWS Cloud IaC

MySql的InnoDB的三层B+树可以存储两千万左右条数据的计算逻辑

Java-fenn

Java

VScode中配置 C/C++ 环境

c vscode 9月月更

认识RocketMQ4.x架构设计

Java-fenn

Java

[架构实战]学习笔记

爱学习的麦子

华为帐号自拟形象上线 打造手机里的另一个你

HarmonyOS SDK

JS 模块化 - 02 Common JS 模块化规范

Java-fenn

Java

抽丝剥茧看时间序列预测

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

架构营第一期作业

许四多

前端也要懂算法,不会算法也能微调一个 NLP 预训练模型

Java-fenn

Java

安卓项目架构设计-梳理现有项目的混乱

Java-fenn

Java

Kafka:可靠!可靠!还是xx的可靠!

程序知音

Java kafka 编程 后端技术

如何保证数据库和缓存双写一致性?

Java快了!

名震GitHub!字节跳动内部顶级数据结构刷题学习笔记根本停不下来

程序知音

Java 数据结构 算法 后端开发 数据结构与算法

重磅来袭!腾讯T7手写高并发实战手册,GitHub热度一直不下

Geek_0c76c3

Java 数据库 spring 开源 架构

架构师的十八般武艺:安全架构

agnostic

安全架构

阿里顶配版 Spring 全家桶高级笔记+学习路线图+硬核资料库,跪着啃完了。。。。

Java-fenn

Java 程序员 面试 Java面试题

JAVA代码审计之java反序列化

Java-fenn

Java

基于electron+vue+element构建项目模板之【自定义标题栏&右键菜单项篇】

Java-fenn

Java

探索商业细分市场,中海打造北京南中轴首座家庭购物中心 | 商业地产

E科讯

react中的diff算法,通俗易懂的解读

flyzz177

React

使用 WebAssembly 打造定制 JS Runtime

Java-fenn

Java

ESP32-C3入门教程 网络 篇(一、 Wi-Fi 使用入门 — 初始化及STA、AP模式)

矜辰所致

wifi ESP32-C3 9月月更

Alibaba架构师内部最新发布SpringCloud开发手册,Github限时开源

Geek_0c76c3

Java 数据库 spring 开源 架构

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