进程和线程小知识(一)

1.并行(Parallelism)与并发(Concurrency)

  1. 并行计算只有在图像处理服务端编程2个领域可以使用,并且它在这2个领域确实有着大量广泛的使用。但是在其他任何地方,并行计算毫无建树!
  2. 多核cpu 因为摩尔定律失效。停留在4GHZ。
    在这里插入图片描述

2.同步(synchronous)和异步(asynchronous)

在这里插入图片描述

3.临界区

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

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

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

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

  • 死锁:是一个静态的问题,没有人能继续往下走。使得程序卡死,不在进行服务。四两小车发生死锁

  • 活锁: 是一个动态问题(电梯遇人情况,A出电梯,B进电梯,A与B相遇,进行避让操作,A往左走,B往右走,,再次相遇。)

  • 饥饿 :是指某一个或者多个线程因为种种原因无法获得所需要的资源,导致一直无法执行。

6.并发级别

在这里插入图片描述

  • 阻塞:当一个线程进入临界区后,其他线程必须等待。
  • 无障碍(Obstruction-Free)
    • 无障碍是一种最弱的非阻塞调度
    • 自由出入临界区
    • 无竞争时,有限步内完成操作
    • 有竞争时,回滚数据。
  • 无锁(Lock-Free)
    • 是无障碍的
    • 保证有一个线程可以胜出
  • 无等待(Wait -Free)
    • 无锁的
    • 要求所有的线程必须在有限步内完成
    • 无饥饿的

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

  • Amdahl定律(阿姆达尔定律)

在这里插入图片描述

并行:2/5
串行:3/5

加速比:1/(3/5+1/2*2/5) = 5/4

  • Gustafson定律(古斯塔夫夫森)
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值