写点什么

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

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

关注

评论

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

第八周课后练习

饭桶

架構師訓練營 week8 作業

ilake

架构师训练营第 1 期 - 第八周作业

Todd-Lee

极客大学架构师训练营

网络模型及性能优化

天天向上

极客大学架构师训练营

典型互联网应用系统使用的技术方案和手段

jorden wang

并发压力&响应时间&系统吞吐量

Yangjing

极客大学架构师训练营

架构师训练营第四周系统架构总结

Sandman

极客大学架构师训练营

第四周学习总结

晴空万里

极客大学架构师训练营

三步实现SSH免密登录Linux服务器

jiangling500

SSH 免密登录 Linux服务器

第四周作业

Griffenliu

第八周作业

Geek_ce484f

极客大学架构师训练营

架构一期第八周作业

Airs

架构师训练营第二期 Week 4 总结

bigxiang

极客大学架构师训练营

一篇文章搞懂 @weakify 和 @strongify

疯清扬

objective-c weak weakify strongify 循环引用

架构师训练营 - 第八周总结

一个节点

极客大学架构师训练营

匠心、携手、深耕:5G Capital展现出的无线产业新范式

脑极体

第八周作业总结

Geek_ce484f

极客大学架构师训练营

性能优化学习笔记

Yangjing

极客大学架构师训练营

架构师训练营第二期 Week 4 作业

bigxiang

极客大学架构师训练营

架构师训练营第八周作业

xs-geek

极客大学架构师训练营

架构 2 期 - 第四周作业(1)

浮生一梦

极客大学架构师训练营 第四周作业 2组

第八周学习总结

饭桶

第四周学习总结

Griffenliu

架构师训练营 - 第八周作业

一个节点

极客大学架构师训练营

第四周-作业一

ray-arch

极客大学架构师训练营

第八周作业

Geek_ce484f

极客大学架构师训练营

还有人不知道JVM调优参数?一次性打包发给你

田维常

JVM jvm调优

《JavaScript高级程序设计》.pdf

田维常

Java 电子书

架构训练营第四周课后作业

Sandman

极客大学架构师训练营

架构师训练营第八周总结

xs-geek

极客大学架构师训练营

第八周总结

睁眼看世界

极客大学架构师训练营

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