2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

一周信创舆情观察(3.22~3.28)

统小信uos

区块链电子合同签署平台搭建,区块链电子存证解决方案

13828808769

区块链+ #区块链#

量化策略系统搭建,马丁策略交易软件

安卓开发从零开始!分析Android未来几年的发展前景,安卓系列学习进阶视频

欢喜学安卓

android 程序员 面试 移动开发

Redis-技术专题-数据日志持久化

码界西柚

redis 持久化 aof rdb

Redis 期中测试

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

大厂面试必须掌握的 Linux 性能优化题

倪朋飞

Linux 面试 性能优化

Java-技术专题-Synchronized锁的分析

码界西柚

Java synchronized

节能降耗——搭建绿色IDC能耗与管控系统

一只数据鲸鱼

物联网 数据中心 数据可视化 IDC 机房管理

阿里云:城市大脑数据智能解决方案

不脱发的程序猿

大数据 阿里云 城市大脑 数据智能解决方案 4月日更

RTC技术干货 | 音频质量评价体系那些事

拍乐云Pano

音视频 WebRTC RTC 3A算法 音频

LiteOS内核源码分析:任务栈信息

华为云开发者联盟

LiteOS 任务栈 栈指针 LOS_StackInfo LOS_Task

一文掌握GaussDB(DWS) SQL进阶技能:全文检索

华为云开发者联盟

sql 全文检索 华为云 GaussDB(DWS) 字段

FloydHub 2020年最佳机器学习书籍之一《可解释机器学习》中文版来啦!

博文视点Broadview

DevEco Studio 2.1 Beta3强势来袭

Geek_283163

华为 鸿蒙 开发

年纪轻轻,为什么要搞中间件开发?“路怎么走,让你们自己挑”

小傅哥

Java 分布式 小傅哥 中间件 架构设计

区块链电子印章签约平台的搭建,区块链电子签约解决方案

13828808769

区块链 #区块链#

大厂面试必问!Android彻底组件化方案实践方法!面试总结

欢喜学安卓

android 程序员 面试 移动开发

4月日更挑战|初夏开更,新人领书

InfoQ写作社区官方

4月日更 热门活动

有了人工智能技术,告警管理会发生什么变化?

睿象云

人工智能 事件管理

需求分析是什么?

Simon

架构实战营

微众银行区块链开源基于Rust的Wasm合约语言框架Liquid

Patract

智能合约 rust polkadot Patract Wasm

4K Video Downloader V6.1.50 版本正式发布

科技猫

产品 软件 行业资讯 开发日志 发布

公安合作作战指挥中心,情报分析研判系统建设

有道云笔记新版编辑器架构设计(下)

有道技术团队

架构 大前端

答题拿奖两不误:华为云知乎金牌答题官,就是你!

华为云开发者联盟

程序员 华为云 知乎答题 答案 金牌答题官

无人驾驶平台,让IT没有难做的测试

鲸品堂

方法论 无人驾驶

EGG NETWORK阿凡提以“自由匿名竞价”流通市场EFTalk

币圈那点事

【LeetCode】笨阶乘Java题解

Albert

算法 LeetCode 4月日更

Apache Flink Meetup · 上海站,超强数据湖干货等你!

Apache Flink

flink 数据湖 iceberg

gorm源码阅读之callback

werbenhu

Go 语言 gorm

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