高并发程序一(基本概念)

为什么需要并行(多线程)?

并行在图像处理和服务端编程两个领域存在着广泛的应用场景。
原因
: 业务要求(业务可能要求多个工作同时进行)
: 性能(进程的消耗远大于线程)

并行中的几个重要概念

1.同步和异步

在这里插入图片描述
异步是从一个线程跳转到另一个线程去执行,并非是不执行。

2.并发和并行

并发和并行在外再来看并没有明显区别。并发一般是指单个cpu,不同的线程交替执行;而并行一般是指多个cpu同时执行。
在这里插入图片描述

3.临界区

临界区用来表示一种共享资源或者说是共享数据,可以被多个线程使用。但是每一次只有一个线程使用它,一旦临界区被占用,其他线程如果想使用它,必须等待。
在这里插入图片描述

4.阻塞(Blocking)和非阻塞(Non-Blocking)

– 阻塞和非阻塞通常用来形容多线程间的相互影响。比如一个线程占用了临界区资源,那么其它所有需要 这个资源的线程就必须在这个临界区中进行等待,等待会导致线程挂起。这种情况就是阻塞。此时,如 果占用资源的线程一直不愿意释放资源,那么其它所有阻塞在这个临界区上的线程都不能工作。
– 非阻塞允许多个线程同时进入临界区

5.死锁(Deadlock)、饥饿(Starvation)和活锁(Livelock)

–死锁是指几个线程互相依赖对方释放资源,形成一个闭环互相等待。
– 饥饿是指某一个或者多个线程因为种 种原因无法获得所 需要的资源,导致 一直无法执行。
–活锁类似于,日常生活里,在路上行走,对面来人,你和对方互相避让,但是相让的资源相同,导致互相都得不到另外部分资源来执行。

6.并发级别

在这里插入图片描述

7.有关并行的2个重要定律

加速比定义:加速比=优化前系统耗时/优化后系统耗时
 Amdahl定律(阿姆达尔定律)
结论:增加CPU处理器的数量并不一定能起到有效的作用, 提高系统内可并行化的模块比重,合理增加并行处 理器数量,才能以最小的投入,得到最大的加速比
 Gustafson定律(古斯塔夫森)
结论:只要有足够的并行化,那么加速 比和CPU个数成正比

我的结论:有两个因素影响加速比:1.并行比重;2.CPU个数;这两个因素的增加都会提高加速比,在某一个因素增加不能明显提高加速比时,增加另一个因素会取得明显效果。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值