并行的2个重要定律Amdahl、Gustafson定律

并发程序的几个概念

  • 同步(Synchronous)

  • 异步(Asynchronous)

  • 阻塞 (Blocking)

  • 非阻塞 (Non-Blocking)

  • 死锁 (Deadlock)

同步和异步通常用来形容方法的调用方式。 同步的方法调用时,后续行为需要等到方法执行完毕后才能执行。 异步调用时,一旦调用可以立即拿到结果,调用方可以继续后续的操作。

这里写图片描述

举个生活中的例子,两件事:煮饭、烧菜。

同步就是:淘米–》煮饭–》等饭熟–》洗菜–》烧菜

异步可能: 淘米–》煮菜–》
洗菜–》烧菜–》--》饭菜皆好。

异步可以理解为统筹思想来解决问题,尽量不在等待中浪费时间。 在实际的产品中,异步可以增强用户体验,比如常见的消息机制,就是异步程序设计的优雅体现。

阻塞和非阻塞通常用来形容多线程间的影响。 比如一个thread1占用了临界区(主内存共享资源),另外的线程需要等待thread1使用完资源之后释放完成,才能获得资源锁。所有的等待都会导致线程挂起,导致资源占用阻塞。

死锁: 比如在双车道高速公路上并行的两辆车A、B,A想拐到B车道,B想转到A车道。现在则会发现互相等待对方开走,但是对方一直往这边转过来,一直僵持。。。这在程序中的多个线程互相等待就是死锁。

有关并行地两大定律

阿姆达尔定律是计算机并行重要的定律。定义了串行系统并行化后的加速比的计算公式和理论上限。

加速比 = 优化之前系统耗时 / 优化后系统耗时

这里写图片描述

假设有n个处理器,t1表示优化前耗时,tn表示经过n个处理器优化后的耗时,f是程序中只能串行执行的比例。

则 tn = t1 * ( f + (1 - f) / n )

加速比 = t1/tn

这里写图片描述

我们可以分析出, 串行比例越低且处理器越多,加速比越高,程序优化效率越高。
如果串行比例占2/3,则无论处理器再多,最大加速比也只能达到1.5。

理想效果是,全部并行,最大加速比为 n。可以根据增加处理器无上限增强程序效率。

  • 古斯塔夫森定律

古斯塔夫森定律也是在表明处理器个数、并行比例和加速比之间的关系。

执行时间: 串行时间a + 并行时间b

优化后时间: a + nb、

加速比: (a + nb) / (a + b)

f串行比例 : a / (a + b)

加速比 :
这里写图片描述

如果串行比例很小,那个加速比就是处理器的个数。

两个定律最低点、最高点都是一致的结论:

无可并行的程序,加速比就是1.
全部是并行程序,加速比就是n。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值