美文网首页工作生活
并发算法之并行流水线

并发算法之并行流水线

作者: 夏与清风 | 来源:发表于2019-07-01 20:09 被阅读0次

并发算法虽然可以充分发挥多核CPU的性能,但并非所有的计算都可以改成并发的形式,在执行过程中有数据相关性的运算都是无法完美并行化的。比如有2个数A和B,如果要计算(A+B)*A/2,这个运行过程是无法并行化的。如果A+B没有执行完,则永远算不出(A+B)*A,这就是数据相关性,如果线程执行时,所需数据存在这样的依赖关系,则无法将它们完美的并行化。

如何解决这种情况呢?方式是借鉴流水线思想。即使(A+B)*A/2无法并行,但如果你需要计算一大堆A和B的值,依然可以将它流水化。首先将计算过程拆分:

P1:C=A+B

P2:D=C*A

P3:D=D/2

步骤P1,P2,P3均在单独的线程中计算,并且每个线程只负责自己的工作,此时P3的计算结果就是最终答案。

--参考文献《实战Java高并发程序设计》

相关文章

  • 并发算法之并行流水线

    并发算法虽然可以充分发挥多核CPU的性能,但并非所有的计算都可以改成并发的形式,在执行过程中有数据相关性的运算都是...

  • 并发算法之并行搜索

    对于有序数据,通常可以采用二分查找法,对于无序数据,则只能挨个查找。 给定一个数组,查找需要满足条件的元素。对于串...

  • 并发算法之并行排序

    大部分排序算法都是串行执行的,当排序元素很多时,使用并行排序算法可以有效利用CPU,提高运算效率,但将串行算法改成...

  • Java并发编程整理之并发与并行概念讲解(1)

    Java并发编程整理之并发与并行概念讲解(1) 并发和并行区别 --[百度]:并发(Concurrent)当有多个...

  • 多线程-了解(一)

    1.并行工作者-最常见的并发模型 委派者分配不同的作业给各个工作者,即是并行 2.流水线模式-无共享并行模型 通常...

  • 服务器并发设计

    并发与并行 并发技术选型 结构并发 状态并发 集群和负载均衡 并发(Coccurrency)和并行(Paralle...

  • 第14章-并发性Concurrency

    并发性Concurrency 1.1 什么是并发 Go是并发语言,而不是并行语言。在讨论如何在Go中进行并发处理之...

  • Golang(十四) 并发性Concurrency

    并发性Concurrency 1.1 什么是并发 Go是并发语言,而不是并行语言。在讨论如何在Go中进行并发处理之...

  • 并发编程-线程

    一:并发和并行 并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际...

  • JS异步编程相关知识点

    并发(concurrency)和并行(parallelism)区别 涉及面试题:并发与并行的区别? 并发是宏观概念...

网友评论

    本文标题:并发算法之并行流水线

    本文链接:https://www.haomeiwen.com/subject/vfincctx.html