写点什么

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

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

关注

评论

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

第二章学习总结

Kalman

产品经理 产品经理训练营

如何对应用进行Android系统签名和常用adb命令总结

Changing Lin

android

Week2:抽奖助手StakeHolder思考

Y.

极客大学产品经理训练营

极客产品训练营第二课作业

HaoJi

第二章作业-产品的利益相关方

第二次作业及总结

青葵

学习

第二周笔记

Ashley.

意淫一下编排

JiangX

28天写作

产品经理训练营第三课:产品思维(上)

克比

产品思维与产品意识学习总结

苏格图德

产品经理训练营

机器学习·笔记之:Cost Function

Nydia

创业失败启示录|短暂的退休生活

阿萌

28天写作 创业失败启示录 青城

利益相关者分析

未月二九

产品经理训练营-第四节课笔记

Geek_娴子

产品经理训练营第二周作业

铭白

02-抽奖小助手与「谁」相关

学习高手song轻松

产品

产品经理训练营第二周作业:利益相关方分析

苏格图德

产品经理训练营

「产品经理训练营」作业 02

🌟

产品经理训练营 极客大学产品经理训练营 产品训练营

第二节课总结

Jove

产品训练营抽奖助手分析

innovator琳

产品

作业 @ 第4课

糯米~

第二章:产品思维和产品意识 - 作业 - 为云g

Weiyung

产品经理训练营第二章作业

Jobs

产品经理训练营

第二周作业-APP的利益相关方

Geek_ce1551

产品经理训练营第 2 次作业(分析利益相关方)

庞玉坤

产品经理训练营

产品经理训练营第二周作业

happy-黑皮

产品经理训练营

产品经理训练营 -- 第二章作业

Lucas zhou

产品经理训练营

产品经理训练营 - 第二周作业

玖玖

第二周

Jove

理解利益相关者(Stake holder)

Geek_a32093

第二周作业-stack holder

Ashley.

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