“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

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

关注

评论

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

LP单双币质押流动性挖矿系统开发

开发微hkkf5566

【Java 实战】实现大转盘抽奖

猫的树

Java 大转盘抽奖

Go 原生插件使用问题全解析

SOFAStack

Go 语言 开源软件 MOSN 问题解析 开源学习

http请求redirect的问题

飞翔123

golang

web前端培训nodejs异步IO

@零度

node.js 前端开发

Ceph集群详细部署配置图文讲解(二)

Lansonli

云原生 私有云 Ceph 云存储 7月月更

Ceph Swift Api 配置与使用(三)

Lansonli

云原生 Ceph 云存储 7月月更

【Java 基础你一定要掌握的知识点】Java异常处理和设计

猫的树

Java 异常处理

龙蜥下游发行版 Alinux 和 UOS 成为 OpenSCAP 官方首批支持的国内 OS

OpenAnolis小助手

国产 龙蜥操作系统 UOS v20 OpenSCAP Alinux 2/3

系统首页 DIY,你的个性化需求 Pro 系统来满足!

CRMEB

Github发布6天,Star55K+,这套笔记足够你拿下90%的Java面试

冉然学Java

java面试 #Github

开源仓库贡献 —— 提交 PR

攻城狮杰森

git GitHub PR 开源贡献 7月月更

数据分析引擎百花齐放,为什么要大力投入ClickHouse?

字节跳动数据平台

java培训之Java8 Stream 代码简化是如何实现的

@零度

stream JAVA开发

一道2016年nice的笔试题引发的思考

芒果酱

7月月更

跟着官方文档学 Python 之:函数

甜甜的白桃

Python 递归 函数 参数 7月月更

太奇葩了!Keepalived突发高可用事故

Java全栈架构师

Java 程序员 面试 程序人生 Keepalived

【都 Java17 了,还不了解 Java 8 ? 】一文带你深入了解 Java 8 新特性

猫的树

java8

全国首创!洞见科技联合山东数据制定的「数据产品登记」两项标准正式发布

洞见科技

数据 联邦学习 隐私计算

对象的内存分配一定都是在堆空间吗?

领创集团Advance Intelligence Group

代码优化 内存分配

FAQ制作工具推荐

Baklib

大数据培训Hive的数据存储与压缩

@零度

hive 大数据开发

Windows下Tomcat内存占用过高问题跟踪(jmap 的使用)

源字节1号

软件开发 小程序开发

nacos注册中心之客户端服务注册

急需上岸的小谢

7月月更

为什么说企业需要具备企业知识管理的能力?

Baklib

亚信科技发布“电信级”核心交易数据库AntDB7.0,助力政企“信”创未来!

亚信AntDB数据库

AntDB 国产数据库 产品发布会

答应我忘掉Postman吧,Apifox才是yyds!

程序员小毕

Java 程序员 程序人生 后端 开发工具

leetcode 135. Candy 分发糖果(困难)

okokabcd

LeetCode 贪心算法 算法与数据结构

企事业单位该如何建设知识管理体系

Baklib

NFT数字藏品交易平台APP开发搭建

开发微hkkf5566

【Docker 那些事儿】关于容器底层技术的奥秘

Albert Edison

7月月更

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